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

电商网站怎么制作烟台专业做网站公司哪家好

电商网站怎么制作,烟台专业做网站公司哪家好,孝感的网站建设,txt做网站如何加图片目录 一、互斥锁的概念 二、互斥锁的原理 三、互斥锁基本函数 3.1 pthread_mutex_init() 初始化互斥锁 3.2 pthread_mutex_lock() 加锁 3.3 pthread_mutex_unlock() 解锁 3.4 pthread_mutex_destroy() 销毁互斥锁 四、代码实现 一、互斥锁的概念 互斥锁(Mute…

目录

一、互斥锁的概念

二、互斥锁的原理

三、互斥锁基本函数

3.1 pthread_mutex_init() 初始化互斥锁

3.2 pthread_mutex_lock() 加锁

3.3 pthread_mutex_unlock() 解锁

3.4 pthread_mutex_destroy() 销毁互斥锁

 四、代码实现


一、互斥锁的概念

互斥锁(Mutex)是一种用于保护临界区(Critical Section)的同步机制,用于在多线程环境下防止多个线程同时访问共享资源。互斥锁能够确保在同一时间只有一个线程能够进入临界区,其他线程必须等待这个线程退出临界区后才能进入。

当一个线程希望进入临界区时,它会尝试获取互斥锁。如果锁已经被其他线程持有,则这个线程会被阻塞,直到锁被释放。一旦线程进入临界区后,它会执行完需要保护的操作,然后释放互斥锁,让其他线程能够进入。

互斥锁是实现线程同步的重要工具之一,能够有效避免多个线程同时访问共享资源导致的竞态条件(Race Condition)问题。在使用互斥锁时,需要注意避免死锁(Deadlock)等问题,确保锁的获取和释放都能顺利进行。

二、互斥锁的原理

互斥锁是一种用于保护共享资源,防止多个线程同时访问的同步机制。其原理可以简单描述为:

  1. 当一个线程需要访问共享资源时,首先尝试获取互斥锁。
  2. 如果互斥锁当前未被其他线程持有,则该线程成功获取互斥锁,可以执行临界区代码。
  3. 如果互斥锁已经被其他线程持有,则当前线程被阻塞,直到互斥锁被释放。
  4. 当线程执行完临界区代码后,释放互斥锁,使得其他线程可以继续获取互斥锁并访问共享资源。

互斥锁的实现可以通过硬件支持或操作系统提供的原子操作来实现,确保在多线程环境下的线程安全性。通过互斥锁可以有效地避免多个线程同时访问共享资源而导致的数据竞争和不确定性结果。

三、互斥锁基本函数

3.1 pthread_mutex_init() 初始化互斥锁

此函数的作用是初始化一个互斥锁对象,并将其属性设置为指定的属性值。

参数说明:

  • mutex: 指向pthread_mutex_t类型的指针,用于指定要初始化的互斥锁对象。
  • attr: 指向pthread_mutexattr_t类型的指针,用于指定互斥锁的属性。可以为NULL,表示使用默认属性。

返回值:

  • 如果函数执行成功,则返回0;若出现错误,则返回对应的错误码。

3.2 pthread_mutex_lock() 加锁

此函数的作用是尝试对指定的互斥锁对象进行加锁操作。如果当前的互斥锁对象已经被其他线程锁住,则调用线程会被阻塞,直到获得锁为止。

参数说明:

  • mutex: 指向pthread_mutex_t类型的指针,用于指定要加锁的互斥锁对象。

返回值:

  • 如果函数执行成功,则返回0;若出现错误,则返回对应的错误码。

3.3 pthread_mutex_unlock() 解锁

此函数的作用是对指定的互斥锁对象进行解锁操作,使其他线程可以获得该互斥锁并访问共享资源。

参数说明:

  • mutex: 指向pthread_mutex_t类型的指针,用于指定要解锁的互斥锁对象。

返回值:

  • 如果函数执行成功,则返回0;若出现错误,则返回对应的错误码。

3.4 pthread_mutex_destroy() 销毁互斥锁

此函数的作用是销毁指定的互斥锁对象,释放相关资源并将其设置为未初始化状态。

参数说明:

  • mutex: 指向pthread_mutex_t类型的指针,用于指定要销毁的互斥锁对象。

返回值:

  • 如果函数执行成功,则返回0;若出现错误,则返回对应的错误码。

 四、代码实现

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<pthread.h>
#include <semaphore.h>pthread_mutex_t mutex;//定义锁变量int g_val=1;void* fun(void* arg)
{for(int i=0;i<1000;i++){//ppthread_mutex_lock(&mutex);//进入临界区,加锁printf("g_val=%d\n",g_val++);pthread_mutex_unlock(&mutex);//出临界区,解锁//v}
}
int main()
{pthread_t id[5];pthread_mutex_init(&mutex,NULL);//初始化锁int i=0;for(;i<5;i++){pthread_create(&id[i],NULL,fun,NULL);}for(i=0;i<5;i++){pthread_join(id[i],NULL);}pthread_mutex_destroy(&mutex);//销毁互斥锁exit(0);
}

运行结果: 


文章转载自:

http://6WXZLVfJ.cfrhc.cn
http://hEubxfBm.cfrhc.cn
http://2fiBgvGp.cfrhc.cn
http://oUe47mQa.cfrhc.cn
http://IfYSJLYv.cfrhc.cn
http://blpfWJ9P.cfrhc.cn
http://uztvJ8bd.cfrhc.cn
http://aaBigx08.cfrhc.cn
http://jT9nZjDd.cfrhc.cn
http://JdTrk7b6.cfrhc.cn
http://ElTAhUw1.cfrhc.cn
http://NV2CU5ul.cfrhc.cn
http://NTjly4Ly.cfrhc.cn
http://92wjh56J.cfrhc.cn
http://8oH3mJjT.cfrhc.cn
http://U0oaP9MR.cfrhc.cn
http://3AE49zKz.cfrhc.cn
http://pYJ0dIE9.cfrhc.cn
http://5x9kmHue.cfrhc.cn
http://2kbXhRDv.cfrhc.cn
http://67iwE7hh.cfrhc.cn
http://IMUyAK4n.cfrhc.cn
http://YSzmK5P5.cfrhc.cn
http://qtBHnmyw.cfrhc.cn
http://daQsdwjN.cfrhc.cn
http://dD16jEFv.cfrhc.cn
http://CqZsICI3.cfrhc.cn
http://ZrXOI5eZ.cfrhc.cn
http://vqEtlxMa.cfrhc.cn
http://rh0MBZ5G.cfrhc.cn
http://www.dtcms.com/wzjs/692480.html

相关文章:

  • 青岛网站设计如何做怎样建一个免费网站
  • 云南网站设计公司桦甸网站建设
  • 德阳网站建设优化网站开发用户名不存在
  • 佛山北京网站建设网站的设计制作与维护
  • 茌平建设局网站桂林市区有什么好玩的
  • 网页下载网站软件外包平台的服务商
  • 不可上网新余seo
  • 网站系统类型wordpress禁言插件
  • 重庆职业能力建设投稿网站贵阳网站开发公司
  • 万网备案初审过了后网站能访问吗wordpress算术验证码
  • 沧州市东光建设局 网站在线报名网站建设
  • 广东省监理建设协会网站网站维护总结
  • 网站设置快捷键做网站责任
  • 宁波专业的网站建设团队广告网站制作报价
  • 河南省南阳市建设局网站wordpress是框架吗
  • 设计投稿的网站有什么wordpress树状文章
  • 搜狗新闻源网站怎么做手机网站搜索框代码
  • 微网站模板标签做竞价网站服务器多少钱
  • 贷款网站怎么做的建设项目环境登记表辽宁省网站
  • 龙岗爱联有学网站建设安全的网站制作公司
  • 邯郸做移动网站费用怎么注册公司的邮箱
  • 商业网站建设平台南京网站排名
  • 定制网站开发流程邯郸企业做网站方案
  • 青海营销网站建设多少钱中国建设银行官网站纪念币预约
  • 网站建设珠江摩尔搜索引擎推广有哪些平台
  • 网站采编队伍建设旅游景区网站开发的政策可行性
  • 群晖可以做网站服务器关键词搜索点击软件
  • 专业建设网站企业建筑工程网课代字幕
  • 未来的网站建设想法策划公司创业计划书
  • 长沙智能建站方案photoshop做网站