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

互联壹佰做企业网站电商主题wordpress

互联壹佰做企业网站,电商主题wordpress,沙井做网站公司,最近十大新闻文章目录 前言一、线程同步二、互斥量 mutex三、死锁总结 前言 一、线程同步 在多线程环境下#xff0c;多个线程可以并发地执行#xff0c;访问共享资源#xff08;如内存变量、文件、网络连接 等#xff09;。 这可能导致 数据不一致性, 死锁, 竞争条件等 问题。 为了解… 文章目录 前言一、线程同步二、互斥量 mutex三、死锁总结 前言 一、线程同步 在多线程环境下多个线程可以并发地执行访问共享资源如内存变量、文件、网络连接 等。 这可能导致 数据不一致性, 死锁, 竞争条件等 问题。 为了解决这些问题需要使用同步机制来确保线程间的协作和互斥访问共享资源。“同步” 的目的 是为了避免数据的混乱解决与时间有关的错误。实际上不仅线程需要同步进程间信号间等等都需要同步机制。 线程同步指一个线程发出某一功能调用时在没有得到结果之前该调用不返回。同时 其他线程为保证数据的一致性不能调用该功能。 二、互斥量 mutex 互斥锁Mutex全称为 Mutual Exclusion是一种常用的同步机制用于保护共享资源免受多个线程同时访问和修改的影响。互斥锁提供了一种互斥访问的机制同一时间只允许一个线程获取锁并访问被保护的资源。 每个线程在对资源操作前都尝试进行先加锁成功加锁才能操作操作结束解锁。 资源还是共享的线程也还是竞争的。 但 通过 “锁” 就将资源的访问变成互斥操作而后与时间有关的错误也就不会再产生了。 1. 互斥锁的基本操作包括两个关键操作 加锁Lock线程通过申请互斥锁来获取对共享资源的访问权。如果互斥锁当前未被其他线程获取线程成功获得锁然后进入临界区Critical Section可以访问共享资源。如果互斥锁已经被其他线程获取申请锁的线程将被阻塞直到锁被释放。 解锁Unlock线程在完成对共享资源的访问之后释放互斥锁使得其他线程可以申请并获取锁。 2. 互斥锁的主要应用函数 : pthread_mutex_init: 用于初始化互斥锁变量。 pthread_mutex_destroy: 用于销毁互斥锁对象。 pthread_mutex_lock: 用于加锁如果互斥锁已被其他线程占用则当前线程阻塞。 pthread_mutex_trylock: 尝试加锁如果互斥锁已被其他线程占用则返回一个失败状态而不阻塞线程。 pthread_mutex_unlock: 用于解锁释放互斥锁使其他线程可以获取。 3. 初始化线程锁 : 有两种方式可以对互斥锁进行初始化静态初始化和动态初始化。 静态初始化 是在定义互斥锁变量时直接进行初始化不需要调用特定的初始化函数。 pthread_mutex_t mutex PTHREAD_MUTEX_INITIALIZER; PTHREAD_MUTEX_INITIALIZER 是一个宏用于静态初始化互斥锁变量。动态初始化动态初始化是在运行时使用初始化函数对互斥锁进行初始化。 pthread_mutex_init(mutex, NULL); 4. 示例代码 在下面代码中main 函数中有一个主线程 打印小写字母my_thread 为 子线程 打印 大写字母。两个线程通过互斥锁来访问 共享资源。 #include stdio.h #include pthread.h #include errno.h #include stdlib.h #include unistd.h #include time.hpthread_mutex_t lock; // 创建 互斥锁void *my_thread(void *arg) {srand(time(NULL)); // 设置随机种子while(1){pthread_mutex_lock(lock);printf(ABC );sleep(rand() % 3);printf(XYZ\n);pthread_mutex_unlock(lock);sleep(rand() % 3); // 休眠随机秒释放cpu资源}pthread_exit(NULL); }int main(void) {pthread_t tid;int ret;srand(time(NULL)); // 设置随机种子ret pthread_mutex_init(lock, NULL); // 初始化互斥锁if(ret ! 0){printf(pthread_mutex_init err\n);}ret pthread_create(tid, NULL, my_thread, NULL);if(ret ! 0){printf(pthread_create err\n);}while(1){pthread_mutex_lock(lock);printf(abc );sleep(rand() % 3);printf(xyz\n);pthread_mutex_unlock(lock);sleep(rand() % 3);}pthread_mutex_destroy(lock); // 销毁 互斥锁pthread_join(tid,NULL); // 等待回收线程获取回收状态return 0; }注意 锁粒度Lock Granularity锁的粒度应该尽可能小以避免锁定过长时间从而降低了并发性能。 三、死锁 死锁产生的原因死锁是指多个线程或进程因为彼此相互等待对方所持有的资源而无法继续执行的状态。 解决 使用资源的有序性通过规定线程获取资源的顺序避免出现循环等待的情况。例如可以约定所有线程按照一定的顺序获取资源从而避免死锁的发生。 如果下面两个线程 获取资源的顺序是相反的则可能会产生死锁。可以将 线程 B 先获取 m1锁再获取 m2锁。 以下面代码的方式获取锁不会存在死锁风险。 #include stdio.h #include pthread.h #include errno.h #include stdlib.h #include unistd.hpthread_mutex_t lock1 PTHREAD_MUTEX_INITIALIZER; pthread_mutex_t lock2 PTHREAD_MUTEX_INITIALIZER;void *my_thread1(void *arg) {pthread_mutex_lock(lock1);printf(my_thread1 : begin\n);pthread_mutex_lock(lock2);printf(my_thread1 : end\n);pthread_mutex_unlock(lock2);pthread_mutex_unlock(lock1);pthread_exit(NULL); }void *my_thread2(void *arg) {pthread_mutex_lock(lock1);printf(my_thread2 : begin\n);pthread_mutex_lock(lock2);printf(my_thread2 : end\n);pthread_mutex_unlock(lock2);pthread_mutex_unlock(lock1);pthread_exit(NULL); }int main(void) {pthread_t tid1,tid2;int ret;ret pthread_create(tid1, NULL, my_thread1, NULL);if(ret ! 0){printf(pthread1_create err\n);}ret pthread_create(tid2, NULL, my_thread2, NULL);if(ret ! 0){printf(pthread2_create err\n);}pthread_join(tid1,NULL);pthread_join(tid2,NULL);return 0; }设置超时机制在请求资源时设置一个超时时间在超过该时间后如果仍未获得资源则放弃等待释放已经获取的资源避免长时间的死锁等待。 总结
http://www.zqtcl.cn/news/600407/

相关文章:

  • 合肥义城建设集团有限公司网站专业建站公司电话咨询
  • 国外平面设计网站有哪些建商城网站公司
  • 深圳做响应式网站网站建设公司行业现状
  • 网站部署城阳网站开发公司
  • 旅游网站的网页设计素材如何网络推广运营
  • 惠州网站建设多少钱注册邮箱
  • 视频制作网站都有哪些网站优化的公司
  • 网站开发运营推广叫什么苏州seo关键词优化推广
  • 龙泉驿区建设局网站引流推广平台软件
  • 做盗版网站韩国服装网站建设
  • 网站策划书籍推荐高端网站设计制作的
  • 优秀电商设计网站有哪些微博网站可以做兼职吗
  • 网站建设 验证码电子商务网站建设流程图
  • 做内贸什么网站资源比较多岳阳网上房地产
  • 去国外网站开发客户中的contact us 没有邮箱失败营销案例100例
  • 网站怎么做图片动态图片大全靖江 建设局网站
  • 汉子由来 外国人做的网站wordpress微信小程序部署
  • 兰州网站建设最新招聘信息江苏网站建设简介模板
  • 最具口碑的企业网站建设企业做网站的流程
  • wordpress多语言企业网站网页制作工具按其制作方式有几种类型
  • 2019年做网站还有机会吗wordpress 虚拟订阅插件
  • 网站都有后台吗怀柔网站建设
  • phpcms 图片网站免费商城网站建设
  • 网站虚拟主机租用中铁建设门户网登录初始密码
  • 网站哪个公司做的好网站建设与管理指什么软件
  • 提升学历要多少钱seo关键字优化技巧
  • 代理会计公司网站模版哪家培训机构学校好
  • 开江建设局网站怎么做让自己的网站
  • 个人建设网站要钱吗专门用来制作网页的软件是什么
  • 关键词挖掘站网seo点击软件手机