+ -
当前位置:首页 → 问答吧 → 一道题目的思考-“生产者消费者问题”

一道题目的思考-“生产者消费者问题”

时间:2011-08-07

来源:互联网

有一个全局的指针,比如 char* gPointer;

进程1进行初始化 比如gPointer = malloc(NUM);

进程2中 进行调用,比如说
if(gPointer)
{
  XXXX.
}

请问这样写有什么坏处。。。

如果是从生产者消费者那个角度来考虑,充其量在if(gPointer)的时候,刚刚读取了指针的值之后,调度程序去执行进程1,然后
XXXX就执行不了了呗。

读取了指针的值之后,调度程序去执行进程1在实际中的可能性大不大?难道是时间片到期了?


本人菜鸟,求指点。。。

作者: giant1st   发布时间: 2011-08-07

全局资源需要同步机制来保证数据的安全性,以你的例子,涉及内存的泄露和数据丢失的问题。

作者: braveyly   发布时间: 2011-08-07

你不用讨论进程。你直接放入2个线程中实验就知道了。

因为只有一个CPU,所以时间片轮换。对于你说的可能性大不大,要看你的这条语句执行的频度。

不能跟CPU玩概率论。


所谓生产者消费者,说白了就是一个变量在不同时间读取的结果不一样。为了保证读取的结果一样就要加锁。

作者: feiyinzilgd   发布时间: 2011-08-07