我正在使用TinyThread++来对我的项目中的线程特性进行干净而简单的平台独立控制。我刚刚遇到了这样一种情况:我希望在不占用CPU的情况下进行响应式同步消息传递,同时允许线程在空闲时继续执行一些工作。当然,我可以简单地产生第三个线程来完成这项“其他工作”,但我所缺少的是一个条件变量wait(int ms)类型函数,而不是已经运行得很好的wait()。这个想法是,我希望它只阻塞最多ms毫秒,这样它就可以超时并定期执行一些操作(在此期间,线程将不会主动等待条件变量)。这个想法是,即使让线程在那里等待突袭任何传入的消息是很好的,如果我让它做一些只需要50微秒执行的任务,并且我只需要每秒运行一次,它绝对不应该强迫我创建另一个线程(以及消息队列和其他资源)来完成它。
这一切有什么意义吗?我正在寻找关于如何实现这一点的建议。我希望在TinyThread代码中添加几行代码就可以为我提供此功能。
发布于 2011-08-25 06:15:46
嗯,wait function的源代码并不是很复杂,所以使所需的修改看起来足够简单:
_wait函数的定时版本(我非常确定有),那么更改它应该可以很好地工作。同样,在执行任何modifications.之前,请仔细阅读文档
现在,在你去做这些修改之前,我不认为你想要做的是一个好主意。使用线程的主要优点是在概念上分离不同的任务。试图在一个线程中做多件事情有点像试图在一个函数中做多件事情:这会使设计变得复杂,并使调试变得更加困难。因此,除非创建新线程的开销明显太大,或者除非生成的代码保持简单易懂,否则我会将其拆分成多个线程。
最后,我有一种感觉,您可能没有意识到条件变量可能会错误地返回(返回时没有任何人做过任何信号,或者当条件仍然为false时返回)。因此,以防万一,我建议您查看一下usage examples,并确保您理解这些循环存在的原因。
https://stackoverflow.com/questions/7182619
复制相似问题