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

织梦网站怎么建设想学网页设计报考什么专业

织梦网站怎么建设,想学网页设计报考什么专业,微信发布wordpress,网站设计平台 动易一 原理 1. 和共享内存/消息队列一样都属于system v版本的进程间通信,接口大同小异。 2. 还是和之前的共享内存/消息队列一样,通过形成的key_t并创建一个信号量集,一个信号量集里面可以有多个信号量,并初始化信号量集合&#xf…

一 原理

1. 和共享内存/消息队列一样都属于system v版本的进程间通信,接口大同小异。

2. 还是和之前的共享内存/消息队列一样,通过形成的key_t并创建一个信号量集,一个信号量集里面可以有多个信号量,并初始化信号量集合,后续对集合中某个特定的元素进行操作。

3. 信号量主要用来计数器,信号量++,--操作是原子的,自带同步机制,当某个信号量元素为0则阻塞/其他时间,阻塞有资源则就唤醒等。

二 接口

1. semget

#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>int semget(key_t key,   // ftok的返回值 int nsems,   // 信号量集合里的信号量的个数int semflg   // 怎么创建/权限是什么);

2. semctl

#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>int semctl(int semid,    // semget的返回值int semnum,   // 信号量集中某个元素的小标 , 0 ~ nint cmd,      // 怎么操作这个对应的下标的元素 ...           // 元素类型 -> 看下面);union semun
{int val;               /* Value for SETVAL */struct semid_ds *buf;  /* Buffer for IPC_STAT, IPC_SET */unsigned short *array; /* Array for GETALL, SETALL */struct seminfo *__buf; /* Buffer for IPC_INFO(Linux-specific) */
}

3. semop

#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>int semop(int semid,            // semget的返回值struct sembuf *sops,  // 信号集里面的某个元素size_t nsops          // 信号集里元素的个数);struct sembuf{unsigned short sem_num;  // 元素的下标short          sem_op;   // 怎么操作short          sem_flg;  // 不满足条件触发的功能}

三 二元信号量的demo代码 

#pragma once
#include <iostream>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <vector>const std::string key_path = "/home/CD/linux/Semaphore";
const int key_val = 123;int Create = IPC_CREAT | IPC_EXCL | 0666;
int User = IPC_CREAT;// 转16进制
void To_Hex(int val)
{char buff[1024] = {0};snprintf(buff, sizeof(buff), "0x%x", val);std::cout << buff << std::endl;return;
}// 获取 key_t
key_t Getkey(const std::string &mypath, int myproj)
{key_t key = ftok(mypath.c_str(), myproj);return key;
}class Semaphore
{
public:Semaphore(){create_key();}// 释放信号量~Semaphore(){if (_semid != -1){if (semop(_semid, 0, IPC_RMID) == -1){std::cout << " delete Semaphore failed" << std::endl;exit(3);}}}void P(){// 设置某个信号量元素的 -- 操作sembuf sem;sem.sem_num = 0;sem.sem_op = -1;int n = semop(_semid, &sem, _nums);if (n == -1){std::cout << "P semop set failed" << std::endl;exit(2);}}void V(){// 设置某个信号量元素的 ++ 操作sembuf sem;sem.sem_num = 0;sem.sem_op = 1;int n = semop(_semid, &sem, _nums);if (n == -1){std::cout << "V semop set failed" << std::endl;exit(2);}}// 创建/获取信号量     信号量集合的个数  初始值void identity(int flag, int nums, int val = -1){_nums = nums;if (flag == IPC_CREAT | IPC_EXCL | 0666){_semid = semget(_key, nums, flag);if (_semid == -1){std::cout << "msgget failed" << std::endl;exit(2);}std::cout << "create sem success" << std::endl;sem_init_nums(_nums, val);}else if (flag == IPC_CREAT){_semid = semget(_key, nums, flag);if (_semid == -1){std::cout << "msgid get failed" << std::endl;exit(2);}}}private:// 获取key_tvoid create_key(){_key = Getkey(key_path, key_val);if (_key == -1){std::cout << "key_t failed" << std::endl;exit(1);}std::cout << "key_t success" << std::endl;}// 初始化信号量集合的每个元素的初始值void sem_init_nums(int nums, int val){if (_nums <= 0){std::cout << "_nums<=0" << std::endl;exit(3);}union semun{int val;               struct semid_ds *buf;  unsigned short *array; struct seminfo *__buf; } sem;sem.val = val;for (int i = 0; i < _nums; i++){semctl(_semid, i, SETVAL, sem);}}private:key_t _key;int _semid;int _nums;
};


文章转载自:

http://J09uPs6R.Lprfk.cn
http://Q7cDfh28.Lprfk.cn
http://owZcjIBT.Lprfk.cn
http://7b59mZWm.Lprfk.cn
http://4pUYxbqI.Lprfk.cn
http://Ld826C6P.Lprfk.cn
http://S5f137ng.Lprfk.cn
http://iHhUCGP2.Lprfk.cn
http://n24c7kSN.Lprfk.cn
http://kAAsvKgM.Lprfk.cn
http://eb0DOug7.Lprfk.cn
http://wrZ6Hk1c.Lprfk.cn
http://2fphmOCz.Lprfk.cn
http://t2BSNne3.Lprfk.cn
http://ETsdaWni.Lprfk.cn
http://eLljc68O.Lprfk.cn
http://giXVNuKW.Lprfk.cn
http://kSBwk51I.Lprfk.cn
http://tLiIBbMu.Lprfk.cn
http://kwnNfEql.Lprfk.cn
http://bg390CIJ.Lprfk.cn
http://b2Dnuylo.Lprfk.cn
http://RdhwbDuh.Lprfk.cn
http://aARYdTGn.Lprfk.cn
http://yOEHUDjX.Lprfk.cn
http://7mWaMDC8.Lprfk.cn
http://veaFO2eX.Lprfk.cn
http://5R58ASau.Lprfk.cn
http://iseM6N7E.Lprfk.cn
http://7SPS67Qd.Lprfk.cn
http://www.dtcms.com/wzjs/774615.html

相关文章:

  • 做婚恋网站多少钱网页开发软件哪个好用
  • 网站设计作业平台旅游网站开发方案百度文库
  • 电子商务网站环境建设wordpress自动回复
  • 成都网站建设六六重庆平台网站建设工作
  • 遵义网站建设公司成都seo服务
  • 手机网站开发与pc网站开发的不同品牌seo培训
  • 网站建站六个目标烟台网页公司联系方式
  • 企业网站无锡工业设计完整作品集
  • flash建网站教程俄语学习网站
  • 专业网站定制公司企业查询信息平台官网
  • 建设银行 u盾不弹出网站北京 网站建设 知乎
  • 工程管理毕业设计代做网站网站开发项目计划书ppt
  • 做视频网站盈利多少wordpress还原安装
  • 房山建站公司门户网站开发技术
  • 百度网站主要提供的服务源码商城网站源码
  • php网站实例教程百度手机seo
  • 网站推广策略怎么写电商在线官方
  • 钢管网站模板国际服务器
  • 一个域名可以做几个网站吗论坛网站如何建设
  • 合肥响应式网站建设方案软件定制为什么不给源码
  • 哪些网站是.net开发的电子商务网站开发的流程图
  • 网站推广seo教程98建筑网站
  • 吉林省住房建设安厅网站网站搜索功能实现
  • 青海省公路工程建设总公司网站域名申请好怎么做网站
  • 重庆网站备案必须到核验点建立网站最先进的互联网技术有哪些
  • 大型网站建设套餐织梦生成网站地图
  • 免费设计海报的网站网站建设 会议主持稿
  • 河南建设工程信息网招标公告企业网站seo多少钱
  • 网站开发技术 html河北seo网站设计
  • 创新的常州做网站建设摩托车官网全部车型图