3 ms·
And of course that 'wait' operation does not involve locks and/or condvars. Oh wait.
by sz4kerto 13y ago
And of course that 'wait' operation does not involve locks and/or condvars.
Oh wait.
- lmm 13y agoWho cares how it's implemented? Manually using a lock is a smell in the same way that goto is a smell. Wait for a task to finish is not a smell in the same way that while is not a smell.
- eXpl0it3r 13y agoThere isn't really that big of a difference between a lock and a wait, which is the point that was being made. It either way will "lock" up the thread until condition X is full filled and since it depends on other threads to finish, it's still very possible to get deadlocks and a like. Besides that, depending on the task, it's very important how something is implemented.
- mannykannot 13y ago"Manually using a lock is a smell in the same way that goto is a smell." The presence of a lock tells you nothing about whether a program is well-designed. In fact, the whole idea that you can argue about the correctness of a program from the presence or absence of "code smells" is absurdly simplistic. I have seen plenty of bad code littered with while statements.
- the_af 13y agoCode smells (I don't like the name either) are just warning signs. They do not necessarily indicate an actual problem. Incorrect use of abstraction levels, such as using tools that are too low-level and error-prone for the task at hand (as in the majority of business applications) IS one of those warning signs. It usually indicates a conceptual problem, and makes the code needlessly complex.
- yxhuvud 13y agoThat can just as well be implemented by message passing, which can happen through a socket or whatever.
- fr0sty 13y agoAnd if both threads are doing a blocking read waiting for their message? Blocking locks, deadlocks, endless fun... But wait, you don't use blocking-IO, you poll the sockets to see if there is data available, right? Do you realize what you are polling? (hint, it is global and mutable)