来个阻塞队列的代码实现,谢谢

请教一下各位,我想实现阻塞队列的功能,比如所有个队列对象gQueue,它有两个函数qin(),qout(),
我有多个线程需要写一个文件,这时候需要给这几个线程写文件的地方排队,大概代码如下

//线程内部

gQueue.qIn();

writeFile();

gQueue.qOut();

//线程内部

一个线程writeFile的时候,另外的线程再qin里面按先进先出顺序排队,当这个线程调用qout的时候队列里面按先进先出顺序使得最先进去的下一个线程能操作文件,
我自己写过一些方式,但是多次运行以后可能会有排队错误,麻烦各位高手不吝赐教,谢谢,顺便说一下简单使用互斥量是不能实现的,那家伙只再两个线程间有用

没看明白你想表达的意思。

你是不是有一堆线程想要往同一个文件里面写东西?如果单单是这样的话。你完全可以维护一个任务集合的队列。

所有需要写文件的线程,往队列里面添加写文件的任务,然后单独再开一个线程,这个线程只负责循环从队列里面取任务执行。

其实这个结构就是只有单个线程的线程池额。如果你对任务的执行先后有顺序要求,可以使用优先队列。

另外需要注意的是,STL里面的队列容器的push和pop操作都不是线程安全的,所以在操作容器的地方需要加锁。