比方说,我有一个阻塞方法,让我们在Block()中调用。线程同步
因为我不希望我的主线程阻塞我可能会创建一个工作线程,而是会调用阻止。但是,我有另外一个条件。
我想调用阻塞在5秒内返回顶部,否则,我想让主线程知道调用阻塞失败并退出工作线程。
什么是该方案的最佳解决方案?
我是这样想的: 创建一个线程workher,在工作线程创建一个定时器对象,拥有5秒, 而且除了打电话的GetTickCount前后调用块之后,计算的增量。
此外,我将定义一个布尔型IsReturned指示Block函数是否已经返回。 Block调用后将其设置为true。
根据定时器功能是布尔我决定如何处理:
如果布尔是真实的我什么也不做。
如果布尔是假的,我可以排队的APC onFailure处或在主线程或许信号Sucess事件,forcfully退出工作线程(事情是我不知道如果我能做到这一点)
此外,在块函数返回之后,我检查增量是否是lett,然后是5秒 并排队APC OnSucess。 (问题是退出来电线程取消定时器也基本上因为定时器无用)
ps - 如果我可以肯定地知道我可以取消定时器功能内的工作线程我不认为我甚至需要gettickcount的东西。
谢谢!
你使用了什么线程API?并行线程?提升线程? – mch 2009-12-16 00:54:11
这是什么阻塞方法?你不能利用windows IO完成端口和SleepEX()吗? – 2009-12-16 00:54:33
windows? Linux呢?苹果系统? – 2009-12-16 03:41:37