标签: multithreading concurrency thread-safety multiprocessing consumer
我正在尝试优化以下代码段:
lock() if (!consumed) { consume() consumed = true } unlock()
显然,只有第一个来执行consume()功能。任何后来的任何一个都将成为无操作,但在这种情况下,他们将需要锁定 - 解锁这是不必要的。额外的要求是如果设置了消耗标志,那么所有线程都需要等到它被消耗,所以它们不能简单地跳过。
consume()
命名此问题以及如何优化它的最佳方法是什么?