关于多线程执行同一函数

y_h1733 2018-03-14 10:35:22
我想实现的功能是同步执行同一函数。我的参数是一个链表。有20个元素,我想使用2个线程同步进行。效率提高这样子
...全文
859 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
z416575462 2018-03-17
  • 打赏
  • 举报
回复
如果处理过程只对链表中的1个节点或只读不改变列表的话,可以修改成多线程的.可以在处理函数中设置输出参数为指向链表节点的指针和要处理的节点数量.这样调用者只要像第一个线程传入节点0的地址和数字10,向第二个线程传入节点10的地址和数字10.而处理函数则从传入的节点指针那开始处理,一共处理 "传入的节点 数量" 个节点,,处理完毕便退出,即可.
plume 2018-03-16
  • 打赏
  • 举报
回复
C++11 local_thread变量 。
明月2 2018-03-16
  • 打赏
  • 举报
回复
不是用多线程就能提升效率,一个链表用个单线程处理,另外用个线程来准备链表数据这样比较合理。
EL-PAAS微服务 2018-03-15
  • 打赏
  • 举报
回复
好的设计方法,把链表封装一下,加锁,使其是线程安全的。 线程运行的处理函数就可以不用加锁了,从链表中取出数据,然后执行对应的逻辑处理。
@风轻云淡_ 2018-03-15
  • 打赏
  • 举报
回复
链表是大概和数据库一样,需要时刻保证数据的有效性,也就是说你在添加或者删除的时候,别的线程或者用户是不能同时操作的,也就是需要加锁,不然指定出问题。你现在用来两个线程来同时操作链表,只是访问的话是没问题的,可以增加效率,但是进行其他操作的时候同一时间只可以有一个线程操作这个链表,所以几个线程是一样的,看你自己的需求了。
自信男孩 2018-03-15
  • 打赏
  • 举报
回复
问题是什么?线程体一样,并且线程使用共同的资源。需要做好互斥,加锁即可。
赵4老师 2018-03-14
  • 打赏
  • 举报
回复
《Windows核心编程》
赵4老师 2018-03-14
  • 打赏
  • 举报
回复
无profiler不要谈效率!!尤其在这个云计算、虚拟机、模拟器、CUDA、多核 、多级cache、指令流水线、多种存储介质、……满天飞的时代!
y_h1733 2018-03-14
  • 打赏
  • 举报
回复
语言是C++
鄢老 2018-03-14
  • 打赏
  • 举报
回复
链表是共享资源,需要在操作链表的地方使用互斥或临界区域(链表操作包括,增删改查), 如果想简单就直接在函数开头部分进行同步(互斥或临界区域,事件,信号灯都可以),函数复杂的花,效率会比较低

64,662

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧