高手请进!!!!criricalsection同步多线程的原理是什么?(100分)

  • 主题发起人 主题发起人 stanely
  • 开始时间 开始时间
S

stanely

Unregistered / Unconfirmed
GUEST, unregistred user!
criticalsection可以同步多线程的访问,
是不是当只要有一个线程进入criticalsection以后,无论在离开之前对谁进行了访问,
哪怕不是什么全局变量,其他任何线程都被挂起?
如果不是这样,那么她怎么能够保证在criticalsection.enter和criticalsection.leave
之间对共享数据的访问呢?criticalsection怎么知道这之间谁是可能的“共享”数据?
难道是编译器的工作么?
 
一般只对全局变量使用。
类似于锁,锁定数据区->操作数据->解锁数据区
 
相当于是一个资源,它一次只能被一个人占有,别人想占有的时候必须等前面的人释放后
这样就确保同时只有一个线程对共享数据的访问了。
所以Enter与Leave一定是成对出现的。
 
我不是这个意思。
关键的是想知道:
当一个线程a通过criticalsection开始执行谋断代码访问x的时候,是阻塞所有通过criticalsection执行的其他线程,
还是通过criticalsection执行的并且访问了和x的时候才阻塞?不访问x就不阻塞?
有那么智能嘛?
 
后退
顶部