C语言线程回调函数,主线程对回调函数的注册
时间: 2024-09-15 10:00:29 浏览: 46
深入浅出剖析C语言函数指针与回调函数
在C语言中,通常通过POSIX线程库(pthreads)来处理线程操作,包括创建、同步和通信等。对于线程回调函数,它是指主线程在创建一个新线程时,将某个函数作为参数传递给该线程,当这个新线程完成某些特定任务后,会自行调用这个回调函数。
当主线程需要在子线程完成后执行一些操作时,可以这样做:
1. 定义一个回调函数原型,比如 `void (*callback_function)(void *)`,这里指针类型表示可以接收任意类型的参数。
2. 在创建线程时,将回调函数的地址传递给线程。例如:
```c
void *thread_routine(void *arg) {
// 子线程的任务...
callback_function(arg); // 调用回调函数
return NULL;
}
void register_callback(void (*cb)(void *)) {
pthread_create(&thread_id, NULL, thread_routine, cb);
}
```
3. 主线程调用 `register_callback` 函数时,传入希望子线程完成任务后调用的回调函数。
4. 当子线程执行完毕,如果设计得当,它会在适当的时候调用回调函数,通常是通过设置标志位或者返回值来触发。
阅读全文