C语言创建多线程运行一个函数并且函数中能控制关闭退出进程
时间: 2023-12-04 09:05:22 浏览: 77
在C语言中,可以使用线程库来创建多线程并运行一个函数。同时,可以通过在函数中使用全局变量或信号量等机制来控制线程的关闭和退出进程。
下面是一个示例代码,其中创建了一个新的线程,运行名为`myThreadFunc`的函数,并在函数中增加了一个全局变量`g_isRunning`来控制线程的退出:
```c
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
int g_isRunning = 1;
void* myThreadFunc(void* arg) {
while (g_isRunning) {
// 线程运行的代码
printf("This is a running thread.\n");
}
printf("Thread is exiting...\n");
pthread_exit(NULL);
}
int main() {
pthread_t myThread;
int ret = pthread_create(&myThread, NULL, myThreadFunc, NULL);
if (ret != 0) {
printf("Error: Failed to create thread.\n");
exit(EXIT_FAILURE);
}
// 主线程执行的代码
printf("Main thread is running...\n");
// 等待一段时间后关闭线程
sleep(5);
g_isRunning = 0;
// 等待线程退出
pthread_join(myThread, NULL);
printf("All threads are exited.\n");
// 退出进程
exit(EXIT_SUCCESS);
}
```
在上面的代码中,首先创建了一个新的线程,并将`myThreadFunc`函数作为线程的入口点。在`myThreadFunc`函数中,使用了一个循环来持续执行线程的代码,同时判断全局变量`g_isRunning`的值来控制线程的退出。在`main`函数中,输出了一条信息表示主线程正在运行,并在等待5秒后将`g_isRunning`设置为0来关闭线程。最后,使用`pthread_join`函数等待线程退出,并输出一条消息表示所有线程都已退出。最后,调用`exit`函数来结束进程。
阅读全文