// D import file generated from 'src/core/sync/barrier.d'
module core.sync.barrier;
public import core.sync.exception;
private import core.sync.condition;
private import core.sync.mutex;
version (Posix)
{
	private import core.stdc.errno;
	private import core.sys.posix.pthread;
}
class Barrier
{
	this(uint limit)
	in
	{
		assert(limit > 0);
	}
	do
	{
		m_lock = new Mutex;
		m_cond = new Condition(m_lock);
		m_group = 0;
		m_limit = limit;
		m_count = limit;
	}
	void wait();
	private 
	{
		Mutex m_lock;
		Condition m_cond;
		uint m_group;
		uint m_limit;
		uint m_count;
	}
}
version (unittest)
{
	private import core.thread;
}
