
c++ 如何给 “运行中“ 的线程传递数据;
发布日期:2021-05-08 09:38:26
浏览次数:12
分类:精选文章
本文共 365 字,大约阅读时间需要 1 分钟。
1:场景是有一个线程池
,我需要将任务队列
中发生读写事件的fd
拿出来传递到线程池
中
std::thread t(func,arg1,arg2,...)
但是我的fd
是在线程已经创建好之后传入,那该怎么办?
线程之间传递数据并不需要什么特殊的手段,因为线程的大部分数据都是共享的,全局变量、静态全局变量和通过指针传递的数据都是可以直接在线程之间共享的。
所以最简单的方法就是定义一个全局的队列,这样每个线程都可以访问到这个队列,主线程把fd写入队列,线程池中的线程都从这个队列中取数据就可以了。当然你也可以把队列的引用通过参数传给每一个线程。 考虑到这个C++标准库的queue不是线程安全的,你可能需要用锁来保证队列的线程安全.
Windows下可以考虑PostThreadMessage
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年04月08日 10时07分49秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
新生儿不建议吃鱼肝油,这些你知道吗
2021-05-08
新生儿哭是因为什么
2021-05-08
基础知识
2021-05-08
nodeName与tagName的区别
2021-05-08
(九)实现页面底部购物车的样式
2021-05-08
在vue中给对象扩展属性的方法
2021-05-08
Neo4j : 通过节点的 id属性 对节点进行查,改,删操作
2021-05-08
Linux标准错误和标准输出重定向到同一个文件
2021-05-08
HTTP Status 404 – Not Found
2021-05-08
【2021年新书推荐】ASP.NET Core 5 and Angular
2021-05-08
python-day3 for语句完整使用
2021-05-08
java基础知识:构造函数
2021-05-08
java基础知识:封装
2021-05-08
linux下安装tomcat服务器
2021-05-08
mysql 中的数据实现递归查询
2021-05-08
linux下远程上传命令scp
2021-05-08
(四)块设备文件
2021-05-08