多线程编程中的竞态条件、互斥锁与条件变量
在多线程编程中,我们常常会遇到各种问题,比如竞态条件。了解这些问题的成因以及如何解决它们,对于编写高效、安全的多线程程序至关重要。
1. 引发竞态条件
竞态条件是指多个线程(或进程)试图同时写入同一个变量的情况。由于我们无法预知哪个线程会先访问该变量,所以也就无法安全地预测会发生什么。多个线程会竞相访问这个变量。
1.1 准备工作
要实现引发竞态条件的程序,你只需要本章第一个示例中编写的 Makefile,以及 GCC 编译器和 Make 工具。
1.2 具体实现步骤
- 编写代码 :
代码分为几个步骤,所有代码都放在一个名为race.c的文件中。首先包含头文件、定义函数原型和一个long long int类型的全局变量i,然后编写main()函数,它会创建五个线程并等待它们完成,最后打印结果i变量。
#include <stdio.h>
#include <pthread.h>
void *add(void *arg);
long long int i = 0;
int main(void)
{
pthread_attr_t threadattr;
pthread_attr_init(&threadattr);
超级会员免费看
订阅专栏 解锁全文
1287

被折叠的 条评论
为什么被折叠?



