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

湖南营销型网站建设价格wordpress线上聊天插件

湖南营销型网站建设价格,wordpress线上聊天插件,家具设计网站推荐,软文广告成功案例关于信号量和共享内存的相关知识可参考下面链接: 进程间通信方式介绍_夜雨听萧瑟的博客-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/919803/

相关文章:

  • 三亚网站建设平台wordpress4.8.1模板
  • 网站如何三合一网站无收录的原因
  • 为什么wordpress主题访问很慢株洲百度seo
  • 大连科技学院官方网站的建设与放holy荷勒公司介绍
  • 江西做网站哪家好网站设计师是什么专业
  • 为什么要建手机网站gif图片动态素材网站
  • 茂名网站设计哈尔滨建站怎么做
  • 对电子商务网站建设的感想seo案例分享
  • 微商需要做网站吗免费服务器虚拟化
  • 广州建网站兴田德润可信开发html网页的软件
  • 做网站挣外快仿牌外贸网站
  • 怎么选择锦州网站建设安徽省工程建设信息网职称查询
  • 电子商务网站平台建设预算不包括wordpress调用搜索结果
  • 竞价托管网站建设网页搭建服务
  • 注册查询官方网站个人网站制作的主要内容
  • 北京sem网站上海网站建设网站制
  • 做网站要学什么语言南宁seo优化公司排名
  • 南通网站建设开发开发网站访问流量赚钱
  • 深圳网站建设 易通鼎北京最大的火车站
  • 廊坊建设网站的公司wordpress 搜索关键词
  • o2o典型代表网站毕业设计做APP好还是网站
  • 安庆市建设局网站建网站淄博
  • 模板建站哪里有网页设计网站名字
  • 关键词没有排名的网站怎么做网站建设合同范本大全
  • 厦门营销型网站网站建设 意向协议书
  • 有没有做培养基的网站泰安营销型网站建设
  • 北京 做网站 公司wordpress管理密码忘记
  • 南京企业建站系统tomcat做网站
  • 网站建设 前端 后端城阳网站建设培训
  • dz网站地图怎么做上杭网站定制