linux C++多线程怎么实现同步

发布网友

我来回答

1个回答

热心网友

如果想多线程并发,最好让这些线程对数据的访问不发生读写冲突,就不用加锁。
假设你是处理多个文件夹,你可以考虑用自己的数据结构做文件夹映射,为每一个线程定义自己的文件夹列表。在加载文件夹列表时,将文件夹均配到线程的任务列表中,每个线程都有自己指定的文件夹处理,相互之间就不用加锁。追问我就在B里面有个static int index = 0;每次调用就 +1
用index来决定处理哪个文件夹。文件夹一个线程处理一个是没问题。
我想问的是怎么同步- =
我试了下,在代码里面加了很多打印,都乱打印。
每一次跑进程打印的结果都不一样= =

追答你使用index这个静态变量,需要考虑一下会不会发生两个线程读到index的值一样的情况?
多线程同步的资料网上很多,你需要结合你的设计需要使用。
你在B中加锁的目的也是为了防止访问共享资源的冲突。这样线程就因为锁,而排队执行。达不到并发的效果,所以,结合共享资源的特点,避免访问冲突就可以达到并发。
之前的假设,是基于调度的设计,你可以参考网上关于多线程任务调度的设计,任务分配是一个高效过程,各线程拥有自己的任务列表运行。
关于debug的信息打印,并不是越多越好,最好先理思路确定必要的信息打印。
个人设计思路,仅供参考,不周之处,还望指正。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com