关于线程的协调!

nuaalj 2003-05-07 09:16:36
当一个线程在对某个变量读/写的时候,另外一个线程对该变量进行写/读(即2个线程,一个读一个写),会造成什么后果?
...全文
88 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
nuaalj 2003-05-07
  • 打赏
  • 举报
回复
有一个监测程序,采集数据(数据比较多)的同时显示数据,有无必要建立2个线程(一个采集一个显示),还是用一个线程,先采集后显示。如果用2个线程,线程间必须协调,采集线程完了通知显示线程工作。这2种方法有什么本质区别,哪种好呢?
yesry 2003-05-07
  • 打赏
  • 举报
回复
复杂化了。
如果只读写简单的一段内存,可是视为原子操作。
例如
int i;
A()//线程
{
if(i==0)
{
//do something.
i=1;
}
}
B()//线程
{
if(i==1)
{
//do something.
i=0;
}
}
hitbabiq 2003-05-07
  • 打赏
  • 举报
回复
可能导致死锁或者程序执行不正确,因此需要控制,保证同一时刻只能有一个线程对其操作
starstargao 2003-05-07
  • 打赏
  • 举报
回复
cbc 可以很好的实现锁TCriticalSection有一个里面的acquire和release可以保证在一段时间内只有一个线程访问那一段地址
用CreateSemaphore()、CreateEvent()、WaitForSingleObject()、ReleaseSemaphore()、SetEvent()等函数可以实现事件,信号灯来协调线程间的同步
starstargao 2003-05-07
  • 打赏
  • 举报
回复
如果不加锁控制,有可能就会出现死锁,你的程序就隔掉了
解决的方法
1。发信号灯,告诉另外一个线程,我一进完了,你来操作吧
2。时钟,到了那个时间,另外一个线程就进行处理,当然在到了时间以后,你还没有处理完,就会出现上面的请况
littlefisher 2003-05-07
  • 打赏
  • 举报
回复
关注,up!

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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