使用sleep实现的简单进程同步

Posted 617-328buaa

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用sleep实现的简单进程同步相关的知识,希望对你有一定的参考价值。

https://blog.csdn.net/qq_29542611/article/details/79662018

代码很简单,如下。但是也有坑!在给线程传参数的不能穿 循环遍历i 的 地址,因为 i 在主线程中 ,被多个线程共享,所以不是唯一的。那么如何让每个线程 都有独自拥有自己的顺序编号呢?

1.方法一:当然可以在堆上开辟空间存储顺序编号呗。自己有自己的顺序编号的空间各自独立。

2.方法二:就是参数是void* 可以直接将循环变量i直接传给void* ,由于 arg 是每个线程 栈空间上的变量 故此 属于各个子线程,然后在使用的时候强转回 int,因为void* 和 int 刚好 都是4字节,这样做是安全的。

 

黑马程序员的《linux系统编程》上也都是方法2的传参方法,但博主的解释并没有看懂。

以上是关于使用sleep实现的简单进程同步的主要内容,如果未能解决你的问题,请参考以下文章

进程互斥同步及通信死锁问题操作系统

进程的同步

操作系统简单学习2(进程同步互斥和死锁)

进程池(同步和异步)

半同步/半异步进程池实现流程

进程同步工具之 管程机制