【任务1】: Linux 系统下的多线程遵循 POSIX 线程接口,称为 pthread。编写 Linux 下的多线程 程序,需要使用头文件 pthread.h,连接时需要使用库 libpthread.a。编写多线程程序 example.c,说明线程创建函数 【任务2】: 创建两个线程,定义两个变量并赋值,一个线程计算两个变量的加法,另一个 线程计算两个变量的减法
时间: 2023-12-03 14:45:08 浏览: 65
【任务1】:
在 Linux 系统下使用 pthread.h 头文件编写多线程程序,需要使用以下步骤:
1. 包含 pthread.h 头文件
2. 创建线程并指定线程处理函数
3. 等待线程结束并释放资源
下面是一个简单的例子,演示了如何使用 pthread 库创建和使用多线程:
```
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
void *my_thread_function(void *arg) {
int *my_arg = (int *) arg;
printf("Hello from thread %d\n", *my_arg);
return NULL;
}
int main() {
pthread_t my_thread;
int thread_arg = 42;
int ret;
ret = pthread_create(&my_thread, NULL, my_thread_function, &thread_arg);
if (ret != 0) {
printf("Error creating thread\n");
exit(1);
}
printf("Hello from the main thread\n");
ret = pthread_join(my_thread, NULL);
if (ret != 0) {
printf("Error joining thread\n");
exit(1);
}
return 0;
}
```
在这个例子中,我们创建了一个名为 my_thread 的线程,并将其处理函数设置为 my_thread_function。在 main() 函数中,我们打印了一条消息,然后等待 my_thread 线程结束。my_thread_function 简单地打印了一条消息,然后返回 NULL。
【任务2】:
下面是一个例子,演示了如何创建两个线程,一个线程计算两个变量的加法,另一个线程计算两个变量的减法:
```
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
void *add_thread_function(void *arg) {
int *args = (int *) arg;
int result = args[0] + args[1];
printf("Addition result: %d\n", result);
return NULL;
}
void *sub_thread_function(void *arg) {
int *args = (int *) arg;
int result = args[0] - args[1];
printf("Subtraction result: %d\n", result);
return NULL;
}
int main() {
pthread_t add_thread, sub_thread;
int args[2] = {5, 3};
int ret;
ret = pthread_create(&add_thread, NULL, add_thread_function, args);
if (ret != 0) {
printf("Error creating add thread\n");
exit(1);
}
ret = pthread_create(&sub_thread, NULL, sub_thread_function, args);
if (ret != 0) {
printf("Error creating sub thread\n");
exit(1);
}
ret = pthread_join(add_thread, NULL);
if (ret != 0) {
printf("Error joining add thread\n");
exit(1);
}
ret = pthread_join(sub_thread, NULL);
if (ret != 0) {
printf("Error joining sub thread\n");
exit(1);
}
return 0;
}
```
在这个例子中,我们创建了两个线程,分别计算加法和减法的结果。我们使用了一个名为 args 的数组来传递参数,args[0] 和 args[1] 分别表示要计算的两个数。注意,我们传递的参数是一个数组,而不是两个单独的变量。这是因为 pthread_create() 函数的第四个参数必须是一个指向 void 的指针,但我们需要传递两个 int 类型的值。
在 main() 函数中,我们依次创建两个线程,并等待它们结束。注意,我们在创建线程时传递了 args 数组的地址,以便在线程函数中访问它。此外,我们还检查了 pthread_create() 和 pthread_join() 函数的返回值,以确保没有错误发生。
阅读全文