在Java中,如何使用信号量实现屏障。以下伪代码是否可行?如何使用Java Semaphore类编写它。
N
是要等待的线程数。
EveryoneHasReachedBarrier
是一个条件变量。
Aquire(mutex)
m = m + 1;
if(m != N)
{
Release(mutex);
Aquire(EveryoneHasReachedBarrier);
}
else
{
m = 0;
Release(mutex);
for(i=0; i<N; i++)
{
Release(EveryoneHasReachedBarrier);
}
}