关于线程之间的通讯(100分)

  • 主题发起人 主题发起人 扮猪吃虎
  • 开始时间 开始时间

扮猪吃虎

Unregistered / Unconfirmed
GUEST, unregistred user!
我需要做一个分布式计算的东东,
需要N个线程协同计算完成优化计算的任务,这里头涉及到线程之间的通讯,
也就是说每个时刻每个线程都会向N-1个线程发它当前的计算状态,同时每个线程也会接受其它N-1个线程发来的消息,
不知道通讯的问题怎么处理,线程没有窗口句柄,好像没法发消息,用共享内存的方法设计到缓冲的问题,也麻烦,
郁闷
 
用临街区或者互斥解决,
 
>>不知道通讯的问题怎么处理,线程没有窗口句柄,好像没法发消息,用共享内存的方法设计到缓冲的问题,也麻烦,
Thread.Handle就是句柄,怎么不能发消息呢?当然能啊。
其实用临界区可以解决,不过我没例程。
 
线程之间不仅可以通过窗口句柄发消息,还可以直接调用API 函数
PostThreadMessage 向指定线程ID的线程发消息。当然目标线程必须拥有
窗口句柄,在Delphi中由TThread所派生的类创建的线程都有窗口句柄。
对于你的问题,用临街区或者互斥是不能解决的,因为它们只能保证
线程中的某断代码不会同时执行,这样的话还是有序运算而不是同步运算,
达不到优化计算的目的。不过在单CPU的系统上,即使做到了同步运算,多个
线程还是一个一个的执行的,不知我的理解是否正确?供参考。
 
后退
顶部