linux下的标准C++编程,有没有“事件队列”这些概念?

发布于 2022-10-15 10:06:13 字数 337 浏览 46 评论 0

本帖最后由 iiiyyyhhhsss 于 2011-04-14 15:32 编辑

例如,我有一个线程A,和一个线程B。

我的线程A,会不断地向线程B,发送任务①、②、③、④、⑤……,

问题是,线程B在任务①还没有完成的时候(也即还没有进入阻塞状态),A又有任务②要发来了,

这种情况下,就是说,B比较滞后的情况下,如何把A所发出的任务的命令,都顺利地都让B接收?

我这里:A不可能等B完成了任务①,才发送任务②的命令。。。

说了这么多,不知道大家明不明白我的意思。。。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

站稳脚跟 2022-10-22 10:06:13

自己建一个队列放任务数据,加互斥锁即可

蛮可爱 2022-10-22 10:06:13

管道

梦明 2022-10-22 10:06:13

同意2L~

往日 2022-10-22 10:06:13

本帖最后由 iiiyyyhhhsss 于 2011-04-14 16:03 编辑

回复 2# hellioncu

    挺有道理的。只可惜我对信号量这些编程不熟悉。

我简化了一下我的任务,大概如下:

main函数开启后,马上创建线程A和B,并进入这两个线程,然后,在线程A和B开始,都是sleep一定时间;
当线程A 睡觉5秒后,向B发送一个触发命令,接着继续去睡觉sleep 5秒;
B在第5秒接到触发后,就醒过来,然后执行“for(int i=0;i<10亿;i++) {cout<<"Hello World!"<<endl;}”;(我相信线程B这个至少得执行很长一段时间。);

当A第2次睡醒后(也即第2次睡了5秒后),再次给B一个命令,要求线程B再一次执行上面那个“10亿次输出的任务”,然后又去睡觉,如此下去,每隔5秒,就会又一次发送一个“10亿次输出的任务”的命令……

那么,这边B一直输出,当第一个“输出10次”完成后,发现,还有一次“输出10次”的任务,完成后,又发现,还有一次……,如此下去。

由于不是很熟悉信号量和互斥锁的编程,有没有谁帮我写一写上面那个例子,我感觉代码应该在30~50行以内可以完成,哪位仁兄,能否帮帮忙?
小弟感激万分啊。。。

忆梦 2022-10-22 10:06:13

回复 4# liexusong

    5楼的例子,事紧急,能否帮帮忙?

帅的被狗咬 2022-10-22 10:06:13

例如,我有一个线程A,和一个线程B。

我的线程A,会不断地向线程B,发送任务①、②、③、④、⑤……,
...
iiiyyyhhhsss 发表于 2011-04-14 15:30

    管道,管道有一定的buffer,可以在B不响应时缓存部分数据。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文