您好,线程怎么用信号量同步 ? 以下代码不行......谢谢 (50分)

  • 主题发起人 新的自我
  • 开始时间
而你的代码将lMaximumCount值设为1,这样用Semaphore根本就是没有什么意义的。
另外由于操作VCL的动作是线程同步的(Edit1.Text = value),所以这样做就不会引起VCL的错误,其实TThread类的“同步”实际上也只是使用同步的方式来操作VCL的。
 
to xeen
这个看你的需求了,总之使用Semaphore的目的是因为Semaphore可以提供一个同一时刻活动线程的上限
 
谢谢liguang, ,谢谢您,看来加 Timer 是不行的。 资源太少

能否将同步的几种方式 信号量、互斥、临届资源、TcriticalSection ?

谢谢
 
你是说让我介绍一下几种不同的用来同步线程对象的不同之处吧。
 
是的 :),这个我一直不清楚,您能讲解一下吗 ? 谢谢您
 
就简单的说一下吧:
信号量的最大作用是可以提供一个同一时刻活动线程的上限
互斥对象的最大作用是当一条拥有互斥对象的线程意外中止(Terminate)的时候,其它等待这个互斥对象的线程会收到一个WAIT_ABANDONED_0(只有条线程会收到,并且详细的你看MSDN的文档吧。)
事件对象的最大作用是它可以设置事情对象的初始化状态,即创建一个事件对象的时候一个线程就可以拥有它(你可以看一下CreateEvent函数的参数列表)。
而临界区呢,这个东东只能同步一条进程内的线程,而无法同步不同进程之中的线程,临界区不是内核对象,正因为它不是内核对象,所以在使用的时候不用切换到系统的内核状态,其速度要比使用内核对象快的多。
总之如果你想同步进程的话,那么最好使用Mutex,如果你想同步一个进程中的线程的话,那么最佳选择是CriticalSectrion。
 
liguang, :
谢谢您 ! 谢谢,我再慢慢理解 ,谢谢您

 
分太少了,笑纳 :)
 
给分:->我好久没有在大富翁上答问题赚分了。
 
您都那么多分了:)
 
顶部