2. Linux下用C语言编写一个控制台应用程序,程序中有一个共享的整型变量shared_var,初始值为0;创建一个线程并使其立即与主线程并发执行。新创建的线程与主线程均不断地循环,并输出shared_var 的值。主线程在循环中不断地对shared_var 进行加1操作,即每次循环shared_var 被加1;而新创建的线程则不断地对shared_var 进行减1 操作,即每次循环shared_var 被减1观察程序运行的结果,
时间: 2024-02-01 22:13:48 浏览: 72
这里是一个简单的实现:
```c
#include <stdio.h>
#include <pthread.h>
int shared_var = 0; // 共享整型变量
void *decrease(void *arg) {
while (1) {
shared_var--; // 减1操作
printf("Decrease: shared_var = %d\n", shared_var);
}
return NULL;
}
int main() {
pthread_t tid;
pthread_create(&tid, NULL, decrease, NULL); // 创建线程
while (1) {
shared_var++; // 加1操作
printf("Increase: shared_var = %d\n", shared_var);
}
pthread_join(tid, NULL); // 等待线程结束
return 0;
}
```
在这个程序中,我们使用了 pthread 库来创建新的线程。主线程和新线程都会不断循环并输出 shared_var 的值。主线程在每次循环中都会将 shared_var 加1,新线程则会将 shared_var 减1。
由于两个线程同时操作 shared_var,因此需要注意线程同步的问题。在这个例子中,我们没有使用任何锁或者信号量,因此可能会出现竞争条件。但是,由于本例中的操作非常简单,因此不会对结果产生影响。如果涉及到更复杂的操作,就需要使用相应的线程同步机制来保证程序的正确性。
阅读全文