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

手机号码定位网站开发定制网络营销计划

手机号码定位网站开发,定制网络营销计划,帝国cms怎么生成网站地图,建程网app下载一体板关于信号量和共享内存的相关知识可参考下面链接: 进程间通信方式介绍_夜雨听萧瑟的博客-CSDN博客 C 创建共享内存_c共享内存_夜雨听萧瑟的博客-CSDN博客 信号量SytemV与Posix信号量的介绍与用法_夜雨听萧瑟的博客-CSDN博客 直接上代码,代码如下&#…

关于信号量和共享内存的相关知识可参考下面链接:

进程间通信方式介绍_夜雨听萧瑟的博客-CSDN博客

C++ 创建共享内存_c共享内存_夜雨听萧瑟的博客-CSDN博客

 信号量SytemV与Posix信号量的介绍与用法_夜雨听萧瑟的博客-CSDN博客

直接上代码,代码如下:

#include <iostream>
#include <string>
#include <unistd.h>
#include <errno.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <sys/shm.h>
#include <string.h>
#define SHARE_MEM_SIZE 2048
class Semaphore
{
private:union semVar{int val;struct semid_ds *buf;unsigned short *array;};int sem_id;
public:bool init(key_t key);bool wait();bool post();bool destroy();
};bool Semaphore::init(key_t key)
{sem_id = semget(key,0,0640);if(-1 == sem_id){if(2 == errno){sem_id = semget(key,1,0640|IPC_CREAT);if(-1 == sem_id){std::cout << "init 1 semget() error" << std::endl;return false;}else{union semVar semTmp;semTmp.val = 1;if(semctl(sem_id,0,SETVAL,semTmp) < 0){std::cout << "init 1 semctl() error" << std::endl;return false;}else{return true;}}}else{std::cout << "init 2 semget() error" << std::endl;return false;}}else{return true;}}bool Semaphore::wait(){struct sembuf sem_b;sem_b.sem_num = 0;sem_b.sem_op = -1;sem_b.sem_flg = SEM_UNDO;if(-1 == semop(sem_id,&sem_b,1)){std::cout << "wait semop failed." << std::endl;return false;}return true;
}bool Semaphore::post()
{struct sembuf sem_b;sem_b.sem_num = 0;sem_b.sem_op = 1;sem_b.sem_flg = SEM_UNDO;if(-1 == semop(sem_id,&sem_b,1)){std::cout << "post semop failed." << std::endl;return false;}return true;
}bool Semaphore::destroy()
{if(semctl(sem_id,0,IPC_RMID) == -1){std::cout << "destroy semctl failed." << std::endl;return false;}return true;
}int main()
{Semaphore sem;//初始化信号灯if(false == sem.init(0x5000)){std::cout << "sem init failed." << std::endl;return -1;}std::cout << "sem init ok." << std::endl;int shmid = 0;  //内存标识符//创建共享内存shmid = shmget((key_t)0x5005,SHARE_MEM_SIZE,0640|IPC_CREAT);if(-1 == shmid){std::cout << "create shareMem failed." << std::endl;return -1;}char* pMemSharedMem = 0;/////等待信号灯挂出,等待成功后,将持有锁if(false == sem.wait()){std::cout << "sem wait failed." << std::endl;return -1;}std::cout << "sem wait ok." << std::endl;sleep(10);//将当前进程与共享内存shmid建立链接,shmat返回指定共享内存的映射地址pMemSharedMem = (char*)shmat(shmid,0,0);std::cout << "read context: " << pMemSharedMem << std::endl;std::string strContext = "hello world, "+ std::to_string(getpid());strncpy(pMemSharedMem,strContext.c_str(),strContext.length());std::cout << "write after: " << pMemSharedMem << std::endl;//shmat的反操作,将共享内存与当前进程分离shmdt(pMemSharedMem);//挂出信号灯if(false == sem.post()){std::cout << "sem post failed." << std::endl;return -1;}std::cout << "sem post ok." << std::endl;//销毁信号灯//if(false == sem.destroy())//{//    std::cout << "sem destroy failed." << std::endl;//    return -1;//}//std::cout << "sem destroy ok." << std::endl;return 0;
}

同时运行3个进程,运行结果如下:

 

http://www.yayakq.cn/news/159998/

相关文章:

  • 泉州专业做网站开发台山网页设计培训
  • 九江网站推广3d绘图培训学校
  • 网站列表页是啥购物网站建设得背景
  • 北京个人网站备案网站开发竞价单页
  • 北京著名的网站制作公司批量管理多个wordpress
  • 网站上线流程网站和微信公众号建设
  • 工艺品网站建设开发什么网站是solr做的
  • 个人如何做网站推广室内设计师怎么找
  • 国外网站排名前十vi设计基本要素
  • 企业网站模板建站流程合肥高端网站建设设计公司哪家好
  • 手机做ppt的免费模板下载网站小学电教检查网站建设资料
  • 网站的友情连接怎么做东丽区做网站
  • 用vs做网站 怎么安装海报
  • 网站建设中html深圳成交型网站建设公司
  • 电子商务网站建设技术规范网站建设思路方向
  • wordpress中文网站wordpress主题 律所
  • 专门做动漫的网站潜江做网站
  • 国内知名网站建设伺浏览器2345网址导航下载安装
  • 无锡企业建站模板wordpress最简易主题
  • 天津网站设计服务公司北京建设工程信息网交易平台
  • 网站建设和整改方案在wordpress中图标
  • 基本的网站开发技术路线福建省网络公司排名
  • 小程序开发网站沈阳市建设工程质量检测中心网站
  • 南京网站设计公司济南兴田德润优惠吗wordpress更改固定链接404
  • 网站无法打开网页是怎么回事现在什么网站做推广比较好
  • 大学生做家教比较好的网站网站优点
  • wordpress 主题 名站全球跨境电商平台排名
  • 网站建设 源代码归属工业网站建设
  • 自己公司做公益网站怎么弄上海新闻坊
  • 设计网站页面鉴赏技巧ppthtml网站地图