c - 线程入口函数和普通函数有什么区别?

标签 c linux multithreading

想知道线程入口函数的区别:

void* thread_function (void* parameter)
{
   struct parameter * thread_data = (struct parameter *)parameter;
   char buffer[20];
   int temp;
   printf_buffer(buffer);
}

和一个正常的功能:

void printf_buffer(char *buffer)
{
    printf("buffer is %s",buffer);
    return;
}

我知道创建线程时调用线程入口,以及如何使用普通函数。

线程入口函数与普通函数在执行、行为或创建实例方面是否存在其他差异?

最佳答案

所谓的“线程函数”(尽管 Justin 编辑称其为“线程入口函数”)和所谓的“普通函数”在语言上没有区别。

对于 pthreads,所谓的线程“启动例程”是一个函数,它接受一个 void* 参数并返回 void*,但是没有什么可阻止您“正常”调用相同的函数。

当线程的启动例程返回时,线程结束执行,但那只是因为线程实现调用它,然后结束线程。这并不是因为启动例程本身有任何特殊之处。

关于c - 线程入口函数和普通函数有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7399144/

相关文章:

运行时的 C 初始值设定项

c - 字符串指针在函数之间不起作用

linux - 如何评估 bash shell 中的给定路径

linux - 删除 Linux 内核 3.0.0 中的所有硬件观察点

ruby - 如何在测试中用模拟可执行文件替换可执行文件?

java - 为什么主线程等待

c# - 使用任务并行库(TPL)进行轮询

c - 从输入中检测字符组合

c - 具有互斥量和信号量的多线程程序

mysql - 更改数据库中的标志以显示某人是 "online"但它不起作用