用c实现多个子线程并发运行,并在子线程序中显示:Thread is running!,使用函数sleep()使得线程挂起10s,之后使用函数ExitThread()撤销线程。
时间: 2024-09-27 10:06:04 浏览: 28
在C语言中,可以使用`pthread`库来创建和管理子线程,实现多个子线程并发运行。这里是一个简单的示例,展示了如何创建一个子线程并让它显示"Thread is running!",然后睡眠10秒后退出:
```c
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <unistd.h> // 包含usleep函数
// 定义全局变量用于共享数据
static int thread_running = 0;
#define SLEEP_TIME 10000 // 十秒的毫秒数
void *thread_function(void *arg) {
pthread_setspecific(pthread_self(), (void *)"Thread Running"); // 设置线程标识
while (!thread_running) { // 当主线程设置标志时开始运行
printf("Thread is running!\n");
fflush(stdout); // 立即刷新缓冲区
usleep(SLEEP_TIME); // 挂起10秒
}
printf("Thread exiting...\n");
exit(0);
}
int main() {
pthread_t thread_id; // 存储线程ID
int rc;
thread_running = 0; // 初始设置线程未运行
// 创建一个新的线程
rc = pthread_create(&thread_id, NULL, thread_function, NULL);
if (rc != 0) {
perror("Error creating thread");
return -1;
}
// 主线程做一些其他工作...
sleep(5); // 等待子线程启动
// 启动子线程
thread_running = 1; // 设置标志让子线程开始运行
// 等待子线程结束
pthread_join(thread_id, NULL);
printf("Main thread finished.\n");
return 0;
}
```
在这个例子中,`thread_function()`是一个子线程函数,它会一直等待`thread_running`变量变为1。当主线程设置了这个变量,子线程就会打印"Thread is running!",然后休眠10秒。`ExitThread()`在C标准库中并未直接提供,通常我们会用`exit()`函数来模拟线程结束。
阅读全文