当前位置: 首页 > wzjs >正文

网站建设会用什么软件湖州注册公司

网站建设会用什么软件,湖州注册公司,目前什么编码做网站最好,使用wordpress搭建手机网站Mutex 代表互斥。在 C 中,std::mutex 类是一个同步原语,用于保护共享数据不被多个线程同时访问。共享数据可以是变量、数据结构等形式。 std::mutex类在 C 中实现互斥锁。它在头文件中定义。 C 中需要互斥锁 在 C 中,当多个线程同时修改相同…

Mutex 代表互斥。在 C++ 中,std::mutex 类是一个同步原语,用于保护共享数据不被多个线程同时访问。共享数据可以是变量、数据结构等形式。

std::mutex类在 C++ 中实现互斥锁。它在头文件中定义。

C++ 中需要互斥锁
在 C++ 中,当多个线程同时修改相同的共享资源时,可能会引起竞争条件。它可能会在执行程序时产生不可预测的输出或意外行为。互斥锁用于通过锁定当前线程来避免竞争条件,以便所有其他线程当时无法访问共享资源,并在当前线程完成时解锁它。

C++ 中 Mutex 的语法
互斥锁的使用可以分为三步:

1.创建一个 std::mutex 对象

std::mutex mutex_object_name;
  1. 锁定线程
    std::mutex 类的lock ()函数锁定线程,并且只允许当前线程运行,直到解锁为止。它可以防止多个线程同时访问共享资源。
  2. 解锁线程
    std::mutex 函数的unlock ()用于在执行包含可能发生竞争条件的代码段后释放锁。它恢复所有等待的线程。
mutex_object_name.unlock ()

在这里插入图片描述
C++ 中的互斥锁示例
让我们创建一个共享整数变量,该变量可以在程序内部全局访问。创建一个函数,使用 for 循环将数字增加 1000000 次。创建两个名为 thread1 和 thread2 的线程来运行相同的increment() 函数。

在这种情况下,线程 1 将把数字加 1,执行 1000000 次,线程 2 将把数字加 1,执行 1000000 次。因此预期输出为 2000000。

然而,当多个线程试图同时修改同一资源时,可能会出现竞争条件。因此无法预测该数字的值

不使用互斥锁同步的代码

// C++ program to illustrate the race conditions 
#include <iostream>
#include <thread>using namespace std;// Shared resource
int number = 0;// function to increment the number
void increment(){// increment number by 1 for 1000000 timesfor(int i=0; i<1000000; i++){number++;}
}int main()
{// Create thread t1 to perform increment()thread t1(increment);// Create thread t2 to perform increment()thread t2(increment);// Start both threads simultaneouslyt1.join();t2.join();// Print the number after the execution of both threadscout << "Number after execution of t1 and t2 is " << number;return 0;
}

输出

执行同一程序三次,观察在没有线程同步的情况下修改共享资源时的行为。

Number after execution of t1 and t2 is 15923263lg@lg-vm:~/lg/c++/18$ ./a.out 
Number after execution of t1 and t2 is 13843590lg@lg-vm:~/lg/c++/18$ ./a.out 
Number after execution of t1 and t2 is 16377696lg@lg-vm:~/lg/c++/18$ ./a.out 
解释 很明显,程序的输出是不可预测的。当两个线程同时运行时,会导致竞争情况,从而产生不可预测的输出。不能保证输出为 2000000。这种不可预测的行为是由于使用多个线程同时修改同一个共享变量而发生的。

具有互斥同步的代码

// C++ program to illustrate the thread synchronization using mutex
#include <iostream>
#include <thread>using namespace std;// import mutex from C++ standard library
#include <mutex>// Create object for mutex
mutex mtx;// Shared resource
int number = 0;// function to increment the number
void increment(){// Lock the thread using lockmtx.lock();// increment number by 1 for 1000000 timesfor(int i=0; i<1000000; i++){number++;}// Release the lock using unlock()mtx.unlock();
}int main()
{// Create thread t1 to perform increment()thread t1(increment);// Create thread t2 to perform increment()thread t2(increment);// Start both threads simultaneouslyt1.join();t2.join();// Print the number after the execution of both threadsstd::cout<<"Number after execution of t1 and t2 is "<<number;return 0;
}
http://www.dtcms.com/wzjs/562395.html

相关文章:

  • 网站开发技术的现状项目开发的主要流程步骤
  • 网站搭建运营洛阳网络科技有限公司
  • 网站建设中幻灯片如何加链接怎样做网站底部导航
  • 给网站建设提意见wordpress 登入
  • 贵阳网站开发外包公司如何创建一个企业网站
  • 顺的网站建设教程aspnet网站开发视频
  • wordpress 插件 上传图片seo有哪些优化工具
  • youku网站开发技术好网站有没有
  • 青岛本地招聘网站功能型网站
  • 建设部网站注册查询wordpress站群版
  • 手机网站什么技术开发建站哪家好就要用兴田德润
  • 东莞商城网站建设哪里比较好数据库转wordpress
  • 17做网站联系织梦模板安装详细教程
  • 网站建设文化效果福州企业如何建网站
  • 去柬埔寨做网站是传销吗建设一个网站的步骤有哪些
  • 专业做网站制作做网站工作室名字
  • 广州免费自助建站平台深圳小程序app定制开发
  • 网站建设都需学哪些个人网站的制作实验报告
  • 网站服务器代码放在哪wordpress什么主题适合学院
  • 网站设计专业实验室建设wordpress商城源码
  • 网站源码破解版域名注册报备
  • 山网站建设白云优化网站建设
  • 电竞网站建设方案做网站赚什么钱
  • 制作医院网站网站制作app免费软件
  • 网站建设中源码下载wordpress响应式播放器
  • 长春移动端网站设计北京WordPress爱好者
  • wordpress 模块开发教程房山网站建设优化seo
  • 外贸公司怎么做网站服装网站建设的规划
  • dedecms 网站搬家新网站开发
  • 网站建站建设工作总结赣州网上房地产官网