在c++中主线程怎样干掉另一个线程

阻塞式线程最好有机制定期检查cancel标记,比如一个std::atomic\u0026lt;bool\u0026gt;
在C#中,一般是用 CancellationToken

■网友
多线程之间的通讯可以用发消息的方式来完成通讯。 我们可以这样设计, 不同线程都是一个个runloop, 他们共享一个message queue。 我们会将发动的消息一个个装到这个queue里面。 比如取消中断某个线程的runloop, 线程在每次循环后去检查这个mq, 然后来根据里面的信号完成操作。 这样就不会被阻塞。 基本上qt cocoa android .net这些主流的UI框架都是基于这个原理来完成多线程通讯的。 这个机制还可以发消息让不同的线程来完成函数调用过程。 也就是invoke。。
■网友
std::thread只支持合作式,不能interrupt也不能kill。另外按照你说的应用场景,kill被阻塞的线程是没必要的,让它阻塞结束之后主动退出是更合适的方法。
■网友
【在c++中主线程怎样干掉另一个线程】 了解一下非阻塞socket:select poll epoll iocp

■网友
基于Windows?试试TerminateThread
■网友
干掉线程很容易,可如何为线程收尸呢?


    推荐阅读