C 安全地取消线程

C 安全地取消线程,c,pthreads,C,Pthreads,我的C代码主要是创建10个线程。然后我加入这些线程 每个线程都指向如下函数: void test_function(char *findThis) { // do something // then something like this if message cancel thread? } 消息可能是一个布尔全局变量。之后如何取消线程?在C中,线程执行特定的函数。如果从该函数返回,则该函数不再存在 因此,如果希望线程停止,只需从该函数返回,如下所示- if (go

我的C代码主要是创建10个线程。然后我加入这些线程

每个线程都指向如下函数:

void test_function(char *findThis)
{
    // do something

    // then something like this
    if message cancel thread?
}

消息可能是一个布尔全局变量。之后如何取消线程?

在C中,线程执行特定的函数。如果从该函数返回,则该函数不再存在

因此,如果希望线程停止,只需从该函数返回,如下所示-

if (got_my_message) {
    return;
}

当然,在执行此操作之前,您应该执行必要的资源清理(即释放分配的内存)。

if(message)return简单。从该函数返回。:)最简单的答案必须是正确的。谢谢。我想得太多了。我想“全局布尔变量”也应该标记为
volatile
?(免责声明,我一生中从未使用过线程!)@AaronMcDaid:可以使用全局变量,也可以使用其他机制(套接字?)进行线程间通信。对于更简单的,我想你可以使用全局变量。在这种情况下,是的,如果您将它标记为
volatile
@alumummonster会更好:当您将一个变量标记为
volatile
时,您告诉编译器该变量将被多个线程以不可预知的方式访问。因此,它不应该对其执行某些优化。阅读更多关于它的信息。