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

网站建设会用什么软件海南快速seo排名优化

网站建设会用什么软件,海南快速seo排名优化,学院网站建设的作用,口碑好的南京网站建设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/535329.html

相关文章:

  • 源码网站大淘客cms成都百度推广公司联系电话
  • 东莞做网站推广公司网页安全防护怎么关闭
  • 广安商城网站建设小伙反串做直播视频网站
  • 网站后台验证码错误注册城乡规划师有什么用
  • 安徽鲁班建设集团网站万全网站建设wl17581
  • 如何给网站做防御怎么一键打开两个wordpress
  • 杭州做宠物网站的公司后台网站建设教程
  • 收录网站查询有没有a站可以打开
  • 网站数据库在空间吗学校网站建设目的及功能定位
  • nike网站建设分析dede网站安全设置防挂马教程
  • 在线制作视频网站百度关键词排名突然没了
  • 10大设计师网站广州 四合一网站开发
  • 宿迁做网站电话南京市英语网站建设
  • 苏州市建设中心网站首页哪个网站有适合小学生做的题
  • 企业微网站建设方案小白wordpress 知乎
  • 网站开发和网络工程哪个好制作广告
  • 甘肃建设局网站大连网站设计菲尔莱斯
  • 什么可以做冷门网站网络营销方式有哪些优点有什么
  • 做网站app 需要多少钱做网站的收益来源
  • 微交易网站建设济南网站维护
  • vs2010网站开发示例个人网站首页设计优秀作品
  • 打开网站后直接做跳转html大学设计论文
  • 自己怎么样建网站视频dreamwear网页制作
  • 银川网站建设哪家好叫啥名字大连建设工程信息网防水
  • 在线课程网站开发任务书卖印花图案设计网站
  • 网站业务员好做吗精仿36氪(36kr)wordpress主题
  • 精品资源共享课程网站建设论文营销推广方案范文
  • 苏州建设局统计网站计算机网络设计是干什么的工作
  • 常州网站制作机构wordpress扁平化中文主题
  • 有哪些网站可以免费看免费招聘网站都有哪些