10 ms·
Sorry, I meant to write: synchronized(this) { a = AcquireLock(); for(c = 0; c < 100; c++) { f(); } } ReleaseLock(a); which is inline
by zanker_swe 9y ago
Sorry, I meant to write:
synchronized(this) {
a = AcquireLock();
for(c = 0; c < 100; c++) {
f();
}
}
ReleaseLock(a);
which is inline with what the blog post was proposing.
To repeat the blog is a question:
for (...) {
synchronized (obj) {
// something
}
}
…could it optimize into this?
synchronized (this) {
for (...) {
// something
}
}
My answer to that is in general, no.
- chrisseaton 9y agoYou mean because ... could be code that can detect whether or not the monitor is held? Yes, but I think it's an assumption so obvious as to be not worth stating that the author means as long as ... does not do that.
- zanker_swe 9y ago> My answer to that is in general, no. Because '...' can include arbitrary side-effect inducing statements that can't be moved around without affecting the behavior. As the poster discovered.