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

网站建设培训个人合肥百度seo排名

网站建设培训个人,合肥百度seo排名,彩票系统开发搭建彩票网站服务器安全怎么做,找苏州网站建设如果有十个银行账号通过不同的十条线程同时向同一个账号转账时,如果没有很好的机制保证十个账号依次存入,那么这些转账可能出问题。我们可以通过互斥量来解决。 C标准库提供了这个互斥量,只需要引入threads.头文件。 互斥量就像是一把锁&am…

如果有十个银行账号通过不同的十条线程同时向同一个账号转账时,如果没有很好的机制保证十个账号依次存入,那么这些转账可能出问题。我们可以通过互斥量来解决。

C标准库提供了这个互斥量,只需要引入threads.头文件。

互斥量就像是一把锁,在一个线程在访问某个共享资源前,需要对互斥量进行加锁操作,其他线程想要对互斥量加锁就会被阻塞,直到当前线程释放该锁。当锁被释放后,被阻塞的线程都开始继续执行,并再次重复前面的步骤,开始争夺可以对互斥量进行加锁的操作。

互斥量这种方式,可以保证每次只有一个线程在操作共享资源。例子如下:

#include <threads.h>
#include <stdio.h>
#define THREAD_COUNT 10
#define THREAD_LOOP 100000000
mtx_t mutex;//全局互斥量对象
long counter = 0;
int run(void *arg){for(int i = 0; i < THREAD_LOOP; i++){mtx_lock(&mutex); // 对互斥量进行加锁counter++; // 共享资源mtx_unlock(&mutex); // 释放锁}printf("Thread %d terminates.\n",*((int*)arg));return thrd_success;
}int main(void){
#ifndef __STDC_NO_THREADS__int ids[THREAD_COUNT];mtx_init(&mutex,mtx_plain);//创建一把锁thrd_t threads[THREAD_COUNT];for(int i = 0; i < THREAD_COUNT; i++){ids[i] = i+1;thrd_create(&threads[i],run,ids+i);//创建线程}for(int i = 0; i < THREAD_COUNT; i++){thrd_join(threads[i],NULL);//等待所有线程执行完成}printf("Counter value is: %ld.\n",counter);mtx_destroy(&mutex);//销毁互斥量对象
#endifreturn 0;
}
~/Desktop$ gcc mtx.c -o mtx
kyunban@kyunban-Parallels-ARM-Virtual-Machine:~/Desktop$ ./mtx
Thread 9 terminates.
Thread 5 terminates.
Thread 8 terminates.
Thread 1 terminates.
Thread 6 terminates.
Thread 7 terminates.
Thread 3 terminates.
Thread 2 terminates.
Thread 4 terminates.
Thread 10 terminates.
Counter value is: 1000000000.

在C语言中,互斥量有三种:

  • mtx_plain :最为简单的互斥量,可对其进行基本的加锁和解锁操作,但不适合需要重复加锁的场景,如在递归调用中,即使当前线程拥有该锁,但对同一个mtx_plain互斥量重复加锁也会导致当前线程被阻塞,从而导致死锁问题(因为当前线程想要加锁就要先等待自己释放锁,而要让当前线程释放锁,就要先要它加锁成功,完成对共享资源的操作后,才能够释放锁,如此一来就是一个无解的问题,死锁就形成了),对于递归调用中要用到锁的场景,可以使用mtx_recursive
  • mtx_recursive:也被称为可重入互斥量,它可以被同一个线程重复锁定多次,而不会阻塞线程,相应地,要对它进行相应多次mtx_unlock才能够完全解锁。
  • mtx_timed:需要配合mtx_timedlock函数一起使用,线程尝试给对应的互斥量加锁时,会以阻塞的方式等待一定时间,若超过给定的时间后仍未给互斥量成功上锁,则线程继续执行。

C标准库还提供了以下两个与“互斥”有关的函数:

  • call_once:只调用指定方法一次,即使它在多个线程中被调用。
  • mtx_trylock:锁住指定互斥量或直接返回
http://www.yidumall.com/news/68526.html

相关文章:

  • 网站建网站建设企业电话百度sem推广
  • 微信公众平台网站建设怎么在百度上推广自己
  • 做网站和网页吉林seo关键词
  • 深圳整站全网推广营销型企业网站制作
  • 重庆小程序商城开发seo项目培训
  • 网站定制排名链接下载
  • 东莞微信网站重庆seo是什么
  • wordpress代购网站主题网络推广是啥
  • 有网站源程序怎么做网站后台合肥网站制作
  • 怎么看网站建设时间蚂蚁链接bt链接
  • 国内企业网站设计公司sem竞价托管价格
  • 网站等级保护测评必须做吗网站内容管理系统
  • 备案 几个网站南宁网站运营优化平台
  • 做网站规避什么色盲测试图数字
  • 网站怎么做伪静态页面百度推广官网
  • 宝安中心地铁站是几号线网站快速收录入口
  • 12380网站建设情况总结宁波网站建设与维护
  • 哪个网站可以做竖屏广西壮族自治区人民医院
  • b2b网站建设谷歌浏览器下载安装(手机安卓版)
  • 如何做新增网站备案引流最好的推广方法
  • 做设计一般用什么素材网站chrome下载
  • 武汉 做网站网站运营包括哪些内容
  • 怎么用手机建网站网站seo优化8888
  • 做市级网站需要什么北京网站制作400办理多少钱
  • b2c电商网站建设优化方案英语
  • 什么网站可以做兼职设计免费二级域名建站
  • 做网站价格表长沙网站推广和优化
  • 网站免费域名申请郑州seo课程
  • 成都网站建设熊掌号百度统计网站
  • php网站链接支付宝成人技术培训学校