文件传输项目模块2互斥与同步
来源:互联网 发布:阿里云服务器配置ipv6 编辑:程序博客网 时间:2024/06/04 00:29
#ifndef LOCKER_H#define LOCKER_H#include<exception>#include<pthread.h>#include<semaphore.h>//信号量头文件#include<iostream>using namespace std;//封装信号量的类class sem{public://创建信号量sem(){if( sem_init(&m_sem, 0, 0) != 0 )//第二个参数为0表示该信号量在线程间共享,第三个参数信号量初始值为0{throw std::exception();}}//销毁信号量~sem(){sem_destroy(&m_sem);}//以下两者配合以达到线程同步的效果//等待信号量bool wait()//->p操作{return sem_wait(&m_sem) == 0; //如果信号量<=0 则sem_wait会阻塞 直到信号量值>=1 然后再进行该操作}//增加信号量bool post()//->v操作{return sem_post(&m_sem) == 0; //对信号量进行加1操作}private:sem_t m_sem;};//封装互斥锁的类class locker{public://创建并初始化互斥锁locker(){if( pthread_mutex_init(&m_mutex, NULL) != 0) //NULL表示互斥锁属性为默认{throw std::execption();}}//销毁互斥锁~locker{pthread_mutex_destroy(&m_mutex);}//获取互斥锁bool lock(){return pthread_mutex_lock(&m_mutex) == 0; //获得锁, 否则会阻塞}//释放互斥锁bool unlock(){reutnr pthread_mutex_unlock(&m_mutex) == 0;}private:pthread_mutex_t m_mutex;};#endif
0 0
- 文件传输项目模块2互斥与同步
- 互斥与同步
- 互斥与同步
- 互斥与同步
- 互斥与同步
- 互斥与同步
- 互斥与同步
- 同步与互斥
- 同步与互斥
- 同步与互斥
- 互斥与同步
- 互斥与同步
- 同步与互斥
- thread_Synchronized2(同步与互斥2)
- 进程同步与互斥
- 进程同步与互斥
- 多线程同步与互斥
- 同步与互斥概念
- AndroidStudio系列------------Gradle
- jquery动态创建table
- 《将博客搬至CSDN》
- install sublime for meteor on ubuntu
- 自定义dialog和Android开发本身dialog
- 文件传输项目模块2互斥与同步
- Command line中使用TexturePacker
- 果用户在onPostExecute调用之间按了返回按钮BadTokenException
- jquery向div添加内容时中文乱码问题解决方法
- [ 浏览器原理 ] Repaint 、Reflow 的基本认识和优化
- ANDROID开发之SQLite详解
- TexturePacker(TP) 命令行打包资源心得
- 第14课时,自测
- 快速线性筛法求素数