【发布时间】:2014-03-07 20:37:03
【问题描述】:
我查阅的几乎所有资源都谈到了如何强制互斥,或处理生产者/消费者问题。
问题是我需要让某些线程在其他线程之前执行,但不知道如何。我正在尝试使用信号量,但并没有真正看到它们对我的情况有何帮助。
我有
- 一个读线程,
- N 个搜索线程,以及
- 写线程。
读取线程用数据填充缓冲区,然后搜索线程解析数据并将其输出到不同的缓冲区,然后写入线程将其写入文件。
知道我将如何实现这一点吗?
如果有人认为有帮助,我可以发布我目前拥有的代码。
【问题讨论】:
-
这正是信号量的一般用途,你确定你对它们的工作原理和作用有很好的了解吗?
-
如果您有一个线性程序逻辑并且不希望您的线程同时运行,为什么要将您的代码拆分成单独的线程?
-
我的想法是将信号量初始化为负数(搜索线程数),然后让每个搜索线程在完成时发出信号以增加信号量。写线程将等待信号量为零,因此当所有搜索线程完成时它会唤醒。但显然你不能将信号量初始化为负值。
-
搜索线程确实同时运行,我只需要在写线程从缓冲区读取之前完成它们。
-
确实如此。信号量的计数存储在不能低于 0 的
unsigned int中
标签: c multithreading pthreads