多线程中对于全局变量的访问是否需要互斥?(50分)

  • 主题发起人 主题发起人 lff0305
  • 开始时间 开始时间
L

lff0305

Unregistered / Unconfirmed
GUEST, unregistred user!
多线程中对于全局变量的访问是否需要互斥?
与全局变量的类型有无关系?
thanks
 
看你怎么用这个全局变量。
 
不改变的不用
 
最好是用吧。
 
最好不用
 
如果是只读的(例如CONST),就不用了。
如果是可写的,那必须用CS或其他的。
 
只是读取,而不修改它的值,也需要互斥么?
 
只读当然就不用了.
 
如果大家都需要访问而不需要修改就不用,否则
只要有一个线程可能修改的话就要互斥,可以看:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=2392085
 
如果还有什么不明白地方可以找我,一起交流。
看我的资料,里面有qq和邮箱,[:)]
 
对于全局变量,它对所有的线程是共享的!如果在同一个时间片内只有一个线程对其进行修改(写操作),而主线程也用到了全局变量,你可以定义全局变量为THREADVAR类型!如果同时有多个线程对同一变量进行读操作,就没有必要互斥了!!如果要进行写操作的话,那要锁定该变量,进行互斥保护,直到写完成之后,其他线程才能访问该变量!!!!
 
to 小度,我同意你的意见。如果都是读操作就不需要了。如果是写的话,可以定义为threadvar线程区域变量。对每一线程来说都是private.
 
多人接受答案了。
 
后退
顶部