用c实现多个子线程并发运行,并在子线程序中显示:Thread is running!,使得线程挂起10s,之后撤销线程。
时间: 2024-09-27 07:06:05 浏览: 35
在 C 语言中,为了实现多个子线程并发运行并展示 "Thread is running!" 的消息,我们可以使用 POSIX 线程库(pthread)。下面是一个简单的示例,展示了如何创建、启动线程以及同步线程:
```c
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#define SLEEP_TIME 10
void *thread_function(void *arg) {
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; // 创建互斥锁
char message[50] = "Thread is running!";
pthread_mutex_lock(&mutex); // 获取锁
printf("%s\n", message);
sleep(SLEEP_TIME); // 挂起10秒
pthread_mutex_unlock(&mutex); // 释放锁
pthread_exit(NULL); // 撤销线程
}
int main() {
pthread_t thread_id; // 存储线程ID
int result;
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; // 创建互斥锁
// 创建新线程
if ((result = pthread_create(&thread_id, NULL, thread_function, NULL)) != 0) {
perror("Error creating thread");
return -1;
}
// 等待线程结束
pthread_join(thread_id, NULL);
printf("Main thread exiting...\n");
return 0;
}
```
在这个例子中,`thread_function` 函数作为线程的目标函数,在其中打印 "Thread is running!" 并暂停10秒。通过 `pthread_mutex_lock` 和 `pthread_mutex_unlock` 调用互斥锁,我们确保了只有一条线程在任何时候访问这个消息。
阅读全文