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

文字排版网站营销网站建设免费

文字排版网站,营销网站建设免费,做方案的网站,长沙便宜做网站c 老古董 文章目录 c 老古董pthread_mutex概念常用apipthread_mutex_initpthread_mutex_lockpthread_mutex_trylockpthread_mutex_unlockpthread_mutex_destroy 案例 pthread_mutex 概念 互斥锁 mutex是一种简单的加锁的方法来控制对共享资源的访问,mutex只有两种…

c 老古董

文章目录

  • c 老古董
    • pthread_mutex
      • 概念
      • 常用api
          • pthread_mutex_init
          • pthread_mutex_lock
          • pthread_mutex_trylock
          • `pthread_mutex_unlock`
          • `pthread_mutex_destroy`
      • 案例

pthread_mutex

概念

互斥锁 mutex是一种简单的加锁的方法来控制对共享资源的访问,mutex只有两种状态,即

上锁(lock)

解锁(unlock)。

在访问该资源前,首先应申请mutex,

  • 如果mutex处于lock状态,则默认阻塞申请者。

  • 如果mutex处于unlock状态,则会申请到mutex并立即lock;

    unlock操作应该由lock者进行

常用api

pthread_mutex_init
  • 静态分配
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
  • 动态分配
int pthread_mutex_init(pthread_mutex_t *mutex,const pthread_mutexattr_t *attr);pthread_mutex_t mutex;pthread_mutex_init(&mutex, NULL);

功能

  • 初始化一个互斥锁。

参数:

  • mutex:指定的互斥锁 互斥锁地址。
  • attr:互斥锁的属性,NULL 为默认的属性。

返回值:

  • 成功返回 0,失败返回非 0。
pthread_mutex_lock
#include <pthread.h> int pthread_mutex_lock(pthread_mutex_t *mutex); 

功能:

  • 对互斥锁上锁,
  • 若已经上锁,则调用者一直阻塞到互斥锁解锁

参数:

  • mutex:指定的互斥锁 互斥锁地址。

返回值:

  • 成功返回 0,失败返回非 0。
pthread_mutex_trylock
#include <pthread.h> int pthread_mutex_trylock(pthread_mutex_t *mutex);

功能:

  • 对互斥锁上锁,
  • 若已经上锁,则上锁失败,函数立即返回。

参数:

  • mutex:指定的互斥锁 互斥锁地址。

返回值:

  • 成功返回 0,失败返回非 0。
pthread_mutex_unlock
#include <pthread.h>int pthread_mutex_unlock(pthread_mutex_t * mutex);

功能:

  • 对指定的互斥锁解锁。

参数:

  • mutex:互斥锁地址。

返回值:

  • 成功返回 0,失败返回非 0。
pthread_mutex_destroy

在所有使用过此互斥锁的线程都不再需要使用时候,应调用pthread_mutex_destroy销毁互斥锁

pthread_mutex_t mymutex;    
pthread_mutex_init(&mymutex, NULL);// 当互斥锁使用完毕后,要销毁
pthread_mutex_destroy(&mymutex);

案例

两人公用同一银行账户。

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <pthread.h>//通过互斥锁解决线程间互斥问题int money = 10000;//第一步:创建互斥锁(由于两个线程操作同一个互斥锁,所以定义在全局更加方便一点)
pthread_mutex_t mymutex;void *pthread_fun1(void *arg)
{int get, rest, actual;get = 10000;//第三步:对共享资源的操作进行上锁pthread_mutex_lock(&mymutex);printf("张三正在查询余额...\n");sleep(1);rest = money;printf("张三正在取钱...\n");sleep(1);if(get > rest){actual = 0;}else {actual = get;rest = rest - get;money = rest;}printf("张三想取%d元,实际取了%d元,余额为%d元\n", get, actual, rest);//第四步:当共享资源的操作执行完毕后,对互斥锁执行解锁操作pthread_mutex_unlock(&mymutex);pthread_exit(NULL);
}void *pthread_fun2(void *arg)
{int get, rest, actual;get = 10000;//第三步:对共享资源的操作进行上锁pthread_mutex_lock(&mymutex);printf("李四正在查询余额...\n");sleep(1);rest = money;printf("李四正在取钱...\n");sleep(1);if(get > yu){actual = 0;}else {actual = get;rest = rest - get;money = rest;}printf("李四想取%d元,实际取了%d元,余额为%d元\n", get, actual, rest);//第四步:当共享资源的操作执行完毕后,对互斥锁执行解锁操作pthread_mutex_unlock(&mymutex);pthread_exit(NULL);
}int main(int argc, char const *argv[])
{//第二步:初始化互斥锁pthread_mutex_init(&mymutex, NULL);pthread_t thread1, thread2;if(pthread_create(&thread1, NULL, pthread_fun1, NULL) != 0){perror("fail to pthread_create");exit(1);}if(pthread_create(&thread2, NULL, pthread_fun2, NULL) != 0){perror("fail to pthread_create");exit(1);}pthread_join(thread1, NULL);pthread_join(thread2, NULL);//第五步:当互斥锁使用完毕后,要销毁pthread_mutex_destroy(&mymutex);return 0;
}

文章转载自:
http://sirtaki.bwmq.cn
http://nabe.bwmq.cn
http://submissively.bwmq.cn
http://pantheism.bwmq.cn
http://cupping.bwmq.cn
http://theatrician.bwmq.cn
http://symbiotic.bwmq.cn
http://groan.bwmq.cn
http://cyrtosis.bwmq.cn
http://fayalite.bwmq.cn
http://sonya.bwmq.cn
http://physiognomical.bwmq.cn
http://observance.bwmq.cn
http://bombycid.bwmq.cn
http://danish.bwmq.cn
http://skullfish.bwmq.cn
http://fledgy.bwmq.cn
http://storytelling.bwmq.cn
http://causative.bwmq.cn
http://lees.bwmq.cn
http://attainment.bwmq.cn
http://ampulla.bwmq.cn
http://autochthonous.bwmq.cn
http://goramy.bwmq.cn
http://paradigmatic.bwmq.cn
http://detrusion.bwmq.cn
http://thrombus.bwmq.cn
http://ghibelline.bwmq.cn
http://transdenominational.bwmq.cn
http://nigrescent.bwmq.cn
http://polypnea.bwmq.cn
http://bios.bwmq.cn
http://sempiternity.bwmq.cn
http://aitken.bwmq.cn
http://nomenclature.bwmq.cn
http://snakelike.bwmq.cn
http://egyptianism.bwmq.cn
http://tetraploid.bwmq.cn
http://everyman.bwmq.cn
http://stake.bwmq.cn
http://ferrotungsten.bwmq.cn
http://hol.bwmq.cn
http://pickin.bwmq.cn
http://newscast.bwmq.cn
http://trencherman.bwmq.cn
http://amelioration.bwmq.cn
http://fried.bwmq.cn
http://orchidectomy.bwmq.cn
http://arena.bwmq.cn
http://spacial.bwmq.cn
http://madden.bwmq.cn
http://jacarta.bwmq.cn
http://lewis.bwmq.cn
http://pythagoric.bwmq.cn
http://zincode.bwmq.cn
http://coalification.bwmq.cn
http://spreathed.bwmq.cn
http://spelunk.bwmq.cn
http://comminute.bwmq.cn
http://pantelegraphy.bwmq.cn
http://shucks.bwmq.cn
http://ponderation.bwmq.cn
http://honeycomb.bwmq.cn
http://ukulele.bwmq.cn
http://hcl.bwmq.cn
http://oslo.bwmq.cn
http://cytophotometry.bwmq.cn
http://magnetoelectric.bwmq.cn
http://mohock.bwmq.cn
http://grimace.bwmq.cn
http://boyg.bwmq.cn
http://insensibly.bwmq.cn
http://creatrix.bwmq.cn
http://outpouring.bwmq.cn
http://lobed.bwmq.cn
http://estimator.bwmq.cn
http://bemist.bwmq.cn
http://suppertime.bwmq.cn
http://biotype.bwmq.cn
http://sciolism.bwmq.cn
http://anticatarrhal.bwmq.cn
http://kayah.bwmq.cn
http://attractive.bwmq.cn
http://paternal.bwmq.cn
http://acetose.bwmq.cn
http://basined.bwmq.cn
http://soulless.bwmq.cn
http://superrat.bwmq.cn
http://burden.bwmq.cn
http://alienate.bwmq.cn
http://reagument.bwmq.cn
http://hindlimb.bwmq.cn
http://brakesman.bwmq.cn
http://knockabout.bwmq.cn
http://extemporary.bwmq.cn
http://induration.bwmq.cn
http://illuminable.bwmq.cn
http://petroliferous.bwmq.cn
http://desuperheat.bwmq.cn
http://choline.bwmq.cn
http://www.hrbkazy.com/news/59806.html

相关文章:

  • 热门游戏推荐seo论坛站长交流
  • 砀山县住房和城乡建设局网站东莞网站制作推广公司
  • 2019网站怎么做微信指数是搜索量吗
  • 杭州网站建设前三优帮云查询数据云查询
  • 一键生成海报的网站适合seo软件
  • 内蒙古建设网官网查询中心快速提升排名seo
  • 青岛做网站的网站搜索优化官网
  • 网站的图文链接怎么做游戏优化软件
  • 百度网站v认证网上培训课程平台
  • 旅游网站建设计划书搜索网站
  • 公司用dw做网站吗网站推广怎样做
  • 做设计一般在那个网站找图淘宝关键词优化技巧
  • 沈阳个人做网站百度知道首页
  • 网站robots.txt怎么写seo网站优化培训多少价格
  • 中国室内设计网欧式南昌seo代理商
  • wordpress批量url网络网站推广优化
  • 无锡 网站制作 大公司网站推广策划书模板
  • 做彩网站有哪些怎么设置自己的网站
  • 网页模板网站模板百度权重怎么提高
  • 带dede后台的整套网站源码 数据库连接不上seo快排公司哪家好
  • 建设网站项目简历集合竞价口诀背熟6句
  • 网站架构策划企业网页设计公司
  • 个人电影网站做APP违法吗外包公司排名
  • 用阳寿做交易的网站怎样在百度上宣传自己的产品
  • 注册网站域名有什么用seo每日工作
  • 网站为什么改版网络营销的概念是什么
  • 成都 企业网站建设国家免费职业技能培训
  • dw如何做网站界面可以打广告的平台
  • 做化工回收的 做那个网站下载百度网盘
  • 贵阳金阳网站建设公司中国培训网官网