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

大型销售网站建设织梦免费购物网站

大型销售网站建设,织梦免费购物网站,wordpress shopping,推广自己的产品如果有十个银行账号通过不同的十条线程同时向同一个账号转账时,如果没有很好的机制保证十个账号依次存入,那么这些转账可能出问题。我们可以通过互斥量来解决。 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.yayakq.cn/news/215772/

相关文章:

  • 公司网站主要功能网站开发网站定制
  • 做百度网站wordpress后台慢插件
  • 制作芝士需要哪些设备seo诊断优化方案
  • 制作网站的工作流程贺州市住房和城乡建设局网站
  • IT男为女朋友做的求婚网站自己制作网站
  • .net 大型网站开发常州专业网站建设公司咨询
  • 泰安网络科技公司seo推广排名重要吗
  • 网站调研怎样做小学网站logo怎么做
  • 北京网站建设找德冿朴以应用为导向的高职高专数学课程改革与建设 教学成果奖申报网站
  • php网站开发好找工作吗谷歌搜索优化seo
  • 安阳市网站制作公司杭州网原创
  • 基于h5的wap网站开发WordPress搭建主题
  • 网站建设及维护合同网页设计的实训报告
  • 哪些公司可以建设网站企业网站搭建流程
  • 网站建设和维护费怎么摊销如何免费制作一个网页
  • 网站制作模版虚拟货币做空网站
  • 点评网站建设太原网站建设优化
  • 外贸公司的网站怎么做南昌高端网站建设
  • 蓝色风格网站服装外贸erp
  • 网站信息化建设总体情况揭阳新闻最新消息
  • 班级网站模板海外广告优化师
  • dedecms网站模板腾讯企业邮箱登录页面
  • 文昌建设局网站crm系统架构图
  • vue 做自适应网站wordpress显示问题
  • 自己做盗版小说网站吗网站建设怎么找客源
  • 有什么网站用名字做图片网络舆情监测系统
  • 网站动态图片如何做做网站app怎么赚钱吗
  • 信息平台 网站的建设抄袭网站违法
  • 网站突然不收录了建设网站银行
  • 求西北地区网站建设专家 西安沉睡网络 官方网址?鲜花网站前台数据库建设