使用C编写一个多线程程序来生成Fibonacci序列
时间: 2023-06-01 21:01:36 浏览: 145
以下是使用C语言编写的生成Fibonacci序列的多线程程序:
```c
#include <stdio.h>
#include <pthread.h>
#define MAX_NUM 50
int fib[MAX_NUM];
void *fibonacci(void *arg) {
int n = *(int*)arg;
fib[0] = 0;
fib[1] = 1;
for (int i = 2; i <= n; i++) {
fib[i] = fib[i-1] + fib[i-2];
}
pthread_exit(NULL);
}
int main() {
int num;
pthread_t tid;
printf("Enter the number of terms: ");
scanf("%d", &num);
pthread_create(&tid, NULL, fibonacci, &num);
pthread_join(tid, NULL);
printf("Fibonacci Sequence: ");
for (int i = 0; i <= num; i++) {
printf("%d ", fib[i]);
}
printf("\n");
return 0;
}
```
在这个程序中,我们使用了一个线程来生成Fibonacci序列。当用户输入数字后,我们使用 `pthread_create` 函数创建一个新的线程来执行 `fibonacci` 函数。在 `fibonacci` 函数中,我们使用了一个循环来生成Fibonacci序列,并将其存储在 `fib` 数组中。在主函数中,我们使用 `pthread_join` 函数等待线程完成执行。最后,我们输出生成的Fibonacci序列。
注意,这个程序中只使用了一个线程来生成Fibonacci序列。如果想要使用多个线程来生成Fibonacci序列,可以将序列分成几部分,每个线程生成其中一部分,最后将它们合并在一起。
阅读全文