网站建设注册什么公司好,免费网站空间免费主机,网页制作教材素材,和黄crm在线1. 临界区和竞态条件#xff1a; 临界区#xff1a;访问和操作共享数据的代码段#xff1b; 竞态条件#xff1a;当有多个线程同时进入临界区时#xff0c;执行结果取决于线程的执行顺序#xff1b; 如下述代码#xff0c;当多个线程同时调用func函数#xff0c;对共享…1. 临界区和竞态条件 临界区访问和操作共享数据的代码段 竞态条件当有多个线程同时进入临界区时执行结果取决于线程的执行顺序 如下述代码当多个线程同时调用func函数对共享数据sum进行操作实际上我们得到的结果则依赖于执行的相对时间 线程1在a.取出sum值然后b.对sum1然后c.写入sum值假设线程2在线程1a步骤之后同样取出sum值并分别进行1计算写回sum值可见线程1和线程2计算的结果都是1此时sum值为1假设线程2在线程1写回数据之后取出sum值进行1写回操作此时sum值为2可见线程的执行相对时间不同导致了共享资源出现了不同结果 int sum 0...void func ()
{sum;
}... 2. 保护临界区 为了保护临界区我们可使用互斥量、读写锁等同步措施保证同一时间只有一个线程能够进入到临界区或者同一时间只有一个写线程进入到临界区从而避免产生竞态条件 int sum 0...void func ()
{lock();sum;unlock();
}... 转载于:https://www.cnblogs.com/wanpengcoder/p/5338186.html