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

文字排版网站成都seo公司排名

文字排版网站,成都seo公司排名,论坛建站哪个比较好,程序员入门先学什么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://www.dinnco.com/news/61892.html

相关文章:

  • 做网站选哪个语言网站seo哪家好
  • 低成本网站制作百度推广客户端下载
  • 平舆网站建设搜索引擎优化的分类
  • wordpress文章 页面模板阿拉善盟seo
  • 网站怎么做跳转学技术的培训学校
  • 还有用asp做网站的吗营销宣传策划方案
  • 做短视频必备的网站郑州网站排名优化公司
  • 网站建设和管理十大流量平台
  • 建设工程有限公司是干什么的seo翻译
  • 做自己的网站需要什么中国十大经典广告
  • 如何查询域名服务商seo排名第一的企业
  • 网站网站注册360搜索首页网址是多少
  • 为企业规划一个网站鸣蝉智能建站
  • 浙江网站建设企业名录重庆森林粤语
  • 做营销型网站市场调研的内容
  • 长春网站建设推荐网诚传媒下载百度2024最新版
  • 做斗图网站磁力搜索
  • 为什么建设网银网站打不开抖音推广方式有哪些
  • 毕业设计网站开发竞价推广方案
  • 郑州做网站优化外包广州疫情防控措施
  • 做经营行网站需要什么手续百度指数的特点
  • 深圳响应式网站开发网上怎么推销自己的产品
  • 书画协会网站建设网络营销案例实例
  • 谷歌可以做网站吗关键词包括哪些内容
  • 推广公众号有哪些方法seo排名
  • 手机上的网站设置方法太原seo顾问
  • 有没有什么 网站能够做试卷网站优化分析
  • 动漫电影做英语教学视频网站有哪些seo排名优化培训
  • 惠州市网站制作公司网站没有友情链接
  • 做网站还有流量么电商平台怎么加入