线程暂停和唤醒的问题


没有resume直接suspend会在free时卡死

我使用Delphi开发多线程,遇到这样的情况,Create线程之后,然后在没有执行Resume的情况下直接Suspend,然后使用Free释放线程,导致窗体卡死。但是如果执行过Resume之后再执行Suspend,这时候再Free线程就不会卡死。

补充:不管在线程创建的时候是创建之后就执行线程还是创建之后先挂起线程,都会出现上面所描述的情况。

为什么会出现这样的情况,原因是什么?

那其他语言里面的多线程编程是不是也有类似的问题,原因是什么?

resume和suspend的次数问题

另外在Delphi中,对线程suspend多少次,就需要调用resume多少次来唤起线程。当然如果在创建线程的时候使用Create(True) 就表示创建时就先挂起线程,那么如果这时候再调用suspend n次的话,就需要调用resume n+1次来唤醒线程。

那么关于线程暂停和唤醒的次数的使用其他语言比如c++是不是也是类似delphi,如果不是的话,那是什么样的?

c 多线程 delphi C++

lagg44 9 years, 4 months ago

Your Answer