怎样保持主线程与分线程同步

cslegend 2001-11-13 06:13:11
主线程要读取分线程中处理出来的数据,请问主线程怎样等待分线程的完成,(主线程是一个函数)。我使用了IntializeCriticalSection()(临界区)和互斥等几种方法,可是都不能停止主线程的运行。哪位大侠知道?谢谢了。
...全文
85 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Crob 2001-11-15
  • 打赏
  • 举报
回复
使用WinAPI EnterCriticalSection和LeaveCriticalSection
uses windows;

var waitCs: TRTLCriticalSection;
begin
EnterCriticalSection(waitCs); //设置同步
try
//.................
finally
LeaveCriticalSection(waitCs); //断开同步
end;
end;

将waitCs设为全局变量
在需要同步时执行EnterCriticalSection(waitCs);
在不需要同步时执行LeaveCriticalSection(waitCs);

让系统来控制同步和不同间的关系
cslegend 2001-11-15
  • 打赏
  • 举报
回复
To:tp168(tp168)
问题是主线程执行完了,而分线程还没有完成啊。全局变量不行。
tp168 2001-11-14
  • 打赏
  • 举报
回复
是啊,用全局变量不是很简单的办法,进入分线程这个变量初始化为0,分线程
处理处理完数据后,置这个变量的值为1,在主线程中判断这个变量的值是不是1
不就行了
alex_2kcn 2001-11-14
  • 打赏
  • 举报
回复
可以使用多种方式作到,你可以用event,samphor,mutex 等多种方法,比如还有全局变量和文件等。哈哈
cslegend 2001-11-14
  • 打赏
  • 举报
回复
我试过使用WaitForSingleObject,但是它好象只能分线程中使用在主线程中无效。
wyzegg 2001-11-13
  • 打赏
  • 举报
回复
用WaitForSingleObject

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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