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

济南市建设工程招投标协会网站做外贸去哪些网站找老外

济南市建设工程招投标协会网站,做外贸去哪些网站找老外,app 外包开发公司,单位网站开发费用进什么科目目录 死锁的危害 死锁出现的原因 死锁的解决方法 死锁是计算机科学中一个非常重要的概念#xff0c;特别是在多线程、并发编程以及数据库管理系统等领域中。下面是关于死锁的危害、出现原因和解决方法的基础概述#xff1a; 死锁的危害 资源浪费#xff1a;死锁导致系统…         目录 死锁的危害 死锁出现的原因 死锁的解决方法 死锁是计算机科学中一个非常重要的概念特别是在多线程、并发编程以及数据库管理系统等领域中。下面是关于死锁的危害、出现原因和解决方法的基础概述 死锁的危害 资源浪费死锁导致系统中的资源被无效地占用而无法释放从而浪费了系统资源。程序停滞死锁会导致相关进程或线程被永久阻塞无法继续执行从而影响系统的正常运行。系统崩溃在一些情况下死锁可能导致系统崩溃从而造成严重的后果。 #include iostream #include thread #include mutexstd::mutex mutex1; std::mutex mutex2;void function1() {std::lock_guardstd::mutex lock1(mutex1);std::this_thread::sleep_for(std::chrono::milliseconds(100));std::lock_guardstd::mutex lock2(mutex2);std::cout Function 1 acquired mutex1 and mutex2\n; }void function2() {std::lock_guardstd::mutex lock2(mutex2);std::this_thread::sleep_for(std::chrono::milliseconds(100));std::lock_guardstd::mutex lock1(mutex1);std::cout Function 2 acquired mutex2 and mutex1\n; }int main() {std::thread t1(function1);std::thread t2(function2);t1.join();t2.join();return 0; }这段代码创建了两个线程每个线程都试图获取两个互斥量mutex1和mutex2的所有权但是获取的顺序是相反的。如果这两个线程同时运行就会发生死锁因为一个线程持有了mutex1但试图获取mutex2而另一个线程持有了mutex2但试图获取mutex1从而导致彼此互相等待最终导致程序停滞。 为了避免死锁需要确保在多个线程中获取互斥量的顺序是一致的。 死锁出现的原因 死锁通常发生在多个进程或线程之间由于彼此持有对方所需的资源而导致的循环等待。常见的原因包括 资源竞争多个进程争夺有限的资源但由于资源分配不当或者进程执行顺序不当导致发生死锁。进程推进顺序不当当多个进程按照不同的顺序获取资源但释放资源的顺序不当时可能导致死锁。并发访问共享资源多个进程同时访问共享资源并且不加控制地相互等待对方释放资源从而导致死锁。 #include iostream #include thread #include mutexstd::mutex mutex;void access_shared_resource(int thread_id) {std::lock_guardstd::mutex lock(mutex); // 获取互斥锁std::cout Thread thread_id is accessing the shared resource.\n;std::this_thread::sleep_for(std::chrono::milliseconds(100)); // 模拟访问共享资源需要的时间// 假设这里需要访问另一个共享资源std::lock_guardstd::mutex lock2(mutex); // 再次获取互斥锁尝试访问另一个共享资源std::cout Thread thread_id is accessing another shared resource.\n; }int main() {std::thread t1(access_shared_resource, 1);std::thread t2(access_shared_resource, 2);t1.join();t2.join();return 0; }在这个例子中两个线程 t1 和 t2 同时尝试访问共享资源并且在获取第一个共享资源后又尝试获取另一个共享资源。然而它们没有适当地协调共享资源的访问顺序而是简单地相互等待对方释放资源这可能导致死锁。 这个例子展示了并发访问共享资源时可能发生的死锁情况因为多个进程或线程同时访问共享资源并且不加控制地相互等待对方释放资源从而导致了死锁的发生。 死锁的解决方法 避免死锁通过合理地设计算法和资源分配策略使系统尽量避免进入死锁状态。比如银行家算法等。检测与恢复设计算法检测系统中的死锁并且在检测到死锁时采取相应的措施进行恢复如中断一些进程或者回滚操作。预防死锁采用一些方法预防死锁的发生例如破坏死锁产生的必要条件之一比如破坏循环等待条件、破坏互斥条件等。资源分配策略采用合适的资源分配策略确保资源的有效利用并且尽量减少死锁的发生。 #include iostream #include thread #include mutexstd::mutex mutex1; std::mutex mutex2;void function1() {std::lock(mutex1, mutex2); // 使用 std::lock 来一次性获取多个互斥量的所有权避免死锁std::lock_guardstd::mutex lock1(mutex1, std::adopt_lock); // 使用 std::adopt_lock 参数表示已经拥有互斥量的所有权std::lock_guardstd::mutex lock2(mutex2, std::adopt_lock);std::cout Function 1 acquired mutex1 and mutex2\n;// 这里执行任务 }void function2() {std::lock(mutex1, mutex2); // 使用 std::lock 来一次性获取多个互斥量的所有权避免死锁std::lock_guardstd::mutex lock1(mutex1, std::adopt_lock); // 使用 std::adopt_lock 参数表示已经拥有互斥量的所有权std::lock_guardstd::mutex lock2(mutex2, std::adopt_lock);std::cout Function 2 acquired mutex1 and mutex2\n;// 这里执行任务 }int main() {std::thread t1(function1);std::thread t2(function2);t1.join();t2.join();return 0; }在这个例子中function1 和 function2 都试图获取 mutex1 和 mutex2 的所有权。通过使用 std::lock 函数一次性获取多个互斥量的所有权并且使用 std::adopt_lock 参数表示已经拥有互斥量的所有权可以避免死锁的发生。这种方式可以保证无论线程以什么顺序获取锁都不会发生死锁。  这些方法通常是根据具体情况和需求来选择和应用的不能一概而论。在实际应用中通常需要根据系统的特点和需求综合考虑选择合适的死锁处理方法。
http://www.dnsts.com.cn/news/270707.html

相关文章:

  • 一流的龙岗网站建设空调seo是什么意思
  • 信息类网站 wordpress凡客诚品来源
  • 苏州吴江建设局招投标网站简历模板制作
  • 湖南做网站找谁山西seo网站设计
  • 网站策划专员招聘南充房产网官网
  • 做网站的公司怎么推广哈尔滨市建设工程招标网
  • 网站可分析做网站不好做
  • 淮南装饰公司网站建设宣传网站建设实践报告
  • 天推广人的网站东莞网络营销外包有哪些
  • windows server 2003 怎么给网站做域名解析网站设计模板百度云
  • 手机自适应网站源码济南建设网官方网站
  • 导航网站建设网站的子域名怎么设置
  • 建设信用卡银行积分兑换商城网站wordpress转换emlog
  • 如何自己做框架开发网站wordpress站群目录收录
  • 今天最新生猪价格天津网络关键词优化
  • 什么学习网站建设成都装饰公司网站建设
  • 网站开发技术的雏形 cgi高校网站建设管理办法
  • 没有网站可以做cpa高端网站建设,恩愉科技
  • 大学生网站设计作业建设网站的协议范本
  • 英文网站排版深圳平面设计公司排行榜
  • 保健品做哪个网站好网站建设投资规划
  • 爬虫科技网站建设北京视频网站建设
  • 怎么学好网站开发网站开发包括网站的等过程
  • 网站源码 预览专业做网站电话
  • 可以做推送的网站用 htmi5做网站
  • 怎样给网站做百度推广wordpress 怎么删除主题
  • 网站栏目第1 ppt模板网
  • 做哪类网站赚钱wordpress域名授权破解版
  • 网站开发语言html5 phpwordpress get_pages 输出格式
  • 建设网站用模版网站与网页设计教程