使用C++编写一个多线程程序来生成Fibonacci序列
时间: 2023-06-01 08:01:38 浏览: 71
以下是使用C编写的多线程程序,用于生成Fibonacci序列:
```c
#include <stdio.h>
#include <pthread.h>
void *fibonacci(void *param);
int main(int argc, char *argv[]) {
pthread_t tid;
pthread_attr_t attr;
if (argc != 2) {
fprintf(stderr, "Usage: ./fibonacci <integer value>\n");
return -1;
}
if (atoi(argv[1]) < 0) {
fprintf(stderr, "Argument must be non-negative\n");
return -1;
}
pthread_attr_init(&attr);
pthread_create(&tid, &attr, fibonacci, argv[1]);
pthread_join(tid, NULL);
return 0;
}
void *fibonacci(void *param) {
int num = atoi(param);
int i, fib[num];
fib[0] = 0;
fib[1] = 1;
for (i = 2; i < num; i++) {
fib[i] = fib[i-1] + fib[i-2];
}
for (i = 0; i < num; i++) {
printf("%d ", fib[i]);
}
printf("\n");
pthread_exit(0);
}
```
在这个程序中,我们首先通过命令行参数获取要生成的Fibonacci序列的长度。然后,我们使用`pthread_create`函数创建一个新的线程来执行`fibonacci`函数。在`fibonacci`函数中,我们使用一个整型数组来存储生成的Fibonacci序列,并使用循环计算出每个数字。最后,我们使用另一个循环来输出生成的序列。最后,我们通过`pthread_exit`函数退出线程。
请注意,我们使用`pthread_join`函数来等待线程完成,以便在程序退出之前输出序列。