请用C语言写出:创建三个线程,每个线程根据主线程传入的基数和运行次数决定运行效果,线程主题应该为一个函数,每个线程每隔1秒,从基数开始加1,运行相应的次数,并讲该基数运行结果打印到标准输出上
时间: 2023-09-19 11:07:02 浏览: 107
以下是C语言代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <unistd.h>
void* threadFunc(void* arg) {
int num = *((int*)arg);
for (int i = 0; i < 5; i++) {
printf("Thread %d: %d\n", pthread_self(), num);
num++;
sleep(1);
}
pthread_exit(NULL);
}
int main() {
pthread_t tid1, tid2, tid3;
int num1 = 1, num2 = 10, num3 = 100;
pthread_create(&tid1, NULL, threadFunc, &num1);
pthread_create(&tid2, NULL, threadFunc, &num2);
pthread_create(&tid3, NULL, threadFunc, &num3);
pthread_join(tid1, NULL);
pthread_join(tid2, NULL);
pthread_join(tid3, NULL);
return 0;
}
```
在主函数中,我们创建了三个线程 `tid1`、`tid2`、`tid3`,并将它们的线程主题都设置为 `threadFunc` 函数。同时,我们还分别设置了三个基数 `num1`、`num2`、`num3`,用于控制每个线程的运行效果。注意,我们通过取地址符将这些基数传递给了线程函数。
在 `threadFunc` 函数中,我们首先将传入的基数赋值给 `num` 变量,然后使用一个循环来控制该线程的运行次数。在每次循环中,我们打印出当前线程的 ID 和 `num` 变量的值,然后将 `num` 值加 1,并调用 `sleep` 函数让线程休眠 1 秒钟。最后,我们调用 `pthread_exit` 函数退出线程。
在主函数中,我们还使用 `pthread_join` 函数等待三个子线程的退出,以保证它们都能正确执行完毕。最后,我们返回 0 表示程序运行成功。
阅读全文