首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多线程:带超时的阻塞等待

多线程:带超时的阻塞等待
EN

Stack Overflow用户
提问于 2011-08-25 05:38:11
回答 1查看 1.6K关注 0票数 1

我正在使用TinyThread++来对我的项目中的线程特性进行干净而简单的平台独立控制。我刚刚遇到了这样一种情况:我希望在不占用CPU的情况下进行响应式同步消息传递,同时允许线程在空闲时继续执行一些工作。当然,我可以简单地产生第三个线程来完成这项“其他工作”,但我所缺少的是一个条件变量wait(int ms)类型函数,而不是已经运行得很好的wait()。这个想法是,我希望它只阻塞最多ms毫秒,这样它就可以超时并定期执行一些操作(在此期间,线程将不会主动等待条件变量)。这个想法是,即使让线程在那里等待突袭任何传入的消息是很好的,如果我让它做一些只需要50微秒执行的任务,并且我只需要每秒运行一次,它绝对不应该强迫我创建另一个线程(以及消息队列和其他资源)来完成它。

这一切有什么意义吗?我正在寻找关于如何实现这一点的建议。我希望在TinyThread代码中添加几行代码就可以为我提供此功能。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-25 06:15:46

嗯,wait function的源代码并不是很复杂,所以使所需的修改看起来足够简单:

  • linux实现依赖于pthread_cond_wait函数,这个函数可以很容易地更改为pthread_cond_timedwait函数。请仔细阅读文档,以防我忘记了任何细节。
  • 在windows方面,它有点复杂,而且我不是windows上的多线程专家。也就是说,如果有_wait函数的定时版本(我非常确定有),那么更改它应该可以很好地工作。同样,在执行任何modifications.

之前,请仔细阅读文档

现在,在你去做这些修改之前,我不认为你想要做的是一个好主意。使用线程的主要优点是在概念上分离不同的任务。试图在一个线程中做多件事情有点像试图在一个函数中做多件事情:这会使设计变得复杂,并使调试变得更加困难。因此,除非创建新线程的开销明显太大,或者除非生成的代码保持简单易懂,否则我会将其拆分成多个线程。

最后,我有一种感觉,您可能没有意识到条件变量可能会错误地返回(返回时没有任何人做过任何信号,或者当条件仍然为false时返回)。因此,以防万一,我建议您查看一下usage examples,并确保您理解这些循环存在的原因。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7182619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档