临界区:
一个程序运行多个线程本身是没有问题的
问题出现在多个线程访问共享资源
多个线程读共享资源没有问题多个线程对共享资源读写操作时发生指令交错,就会出现问题
一段代码块内如果存在对共享资源的多线程读写操作,则称这段代码块为临界区
static int counter = 0;static void increment()// 临界区{counter++;}static void decrement()// 临界区{counter--;}
竞态条件:
多个线程在临界区内执行,由于代码的执行序列不同而导致结果无法预测,称之为发生了竞态条件
