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

带搜索网站建设视频教程wordpress使用端口

带搜索网站建设视频教程,wordpress使用端口,展示型网站建设方案,英文网站建设风格特点概述 什么是信号灯#xff1a; 信号灯也称为信号量#xff0c;代表的是一类资源#xff0c;其值表示系统中该资源的数量。 主要用途是实现进程、线程的同步。 什么是P/V操作#xff1a; P操作就是申请资源#xff0c;V操作就是释放操作。 信号灯的种类#xff1a; …概述 什么是信号灯 信号灯也称为信号量代表的是一类资源其值表示系统中该资源的数量。 主要用途是实现进程、线程的同步。 什么是P/V操作 P操作就是申请资源V操作就是释放操作。 信号灯的种类 Posix 有名信号灯编译时需链接pthread库。有名信号灯文件存放在/dev/shm目录下 Posix 无名信号灯只支持线程同步编译时需链接pthread库 System V 信号灯 Posix 信号灯 Posix 信号灯的打开/关闭/删除函数有所不同但PV操作是使用的同一组函数。具体函数如下 1、 打开/关闭/删除 1.1 有名信号灯 //打开 sem_t *sem_open(const char *name,int oflag); sem_t *sem_open(const char *name,int oflag,mode_t mode,unsigned int value); //关闭 int sem_close(sem_t *sem); //删除 int sem_unlink(const char *name); 返回值成功返回信号量指针失败返回SEM_FAILED name信号灯的名字即文件名 oflag打开方式常用O_CREAT mode文件权限常用0666 value信号量值。二元信号灯值为1普通信号灯表示资源数目。 1.2 无名信号灯 //创建 int sem_init(sem_t *sem, int pshared, unsigned int value); //销毁 int sem_destroy(sem_t *sem); sem信号量指针 pshared写0代表不能在进程间共享。Linux中无名信号灯不能在进程间通信 value信号量值。 2、P/V操作 2.1 P操作 int sem_wait(sem_t *sem); 当信号量为0时进入阻塞直到信号量不为0 当信号量不为0时会将信号量的值-1 2.2 V操作 int sem_post(sem_t *sem); 该函数使用后会将信号量值1 System V 信号灯 1、创建 int semget(key_t key, int nsems, int semflg); 返回值成功返回信号灯id失败返回-1 key键值由ftok生成 nsems信号灯的个数 semflg权限通常写为IPC_CREAT|0666 2、控制信号灯 int semctl(int semid, int semnum, int cmd, ...); semid信号灯id semnum操作哪一个信号灯序号从0开始 cmd写入IPC_RMID代表删除操作 写入SETVAL代表初始化信号灯的值此时需要传入第四个参数类型是共用体 union semun共用体 union semun {int val; //设置信号灯的初始值struct semid_ds *buf;unsigned short *array; } arg;3、P/V操作 int semop(int semid, struct sembuf *sops, size_t nsops); semid信号灯id sopsP/V操作 nsops要操作的信号灯个数通常写1 struct sembuf结构体 struct sembuf {unsigned short sem_num; //要操作的信号灯的编号short sem_op; //1:V操作,-1:P操作short sem_flg; //0:阻塞,IPC_NOWAIT不阻塞 }; 示例代码 1、有名信号灯 见博文12.2 Linux_进程间通信_共享内存-相关函数-实验代码-2、AB进程互传数据 博文链接为12.2 Linux_进程间通信_共享内存-CSDN博客 2、无名信号灯 无名信号灯只能用于线程间通信下面是无名信号灯实现AB线程利用共享内存互传数据。 #include stdio.h #include errno.h #include pthread.h #include sys/mman.h #include string.h #include sys/types.h #include sys/stat.h #include fcntl.h #include unistd.h #include semaphore.hsem_t sem_mmap; void* mmap_addr NULL; char buf[100] {0}; int i0; void* Afun(void* arg){memcpy(mmap_addr,A Start SIG,strlen(A Start SIG));while(1){sem_wait(sem_mmap);if(*(char*)mmap_addr B){//读出B线程写入的内容printf(A read:%s\n,(char*)mmap_addrstrlen(B));//读取数据不读取数据来源标号memset(mmap_addr,0,strlen(mmap_addr));//清空缓冲区//写入新数据memcpy(mmap_addr,A,strlen(A));//数据来源标号sprintf(buf,A_Data:%d,i); //新数据memcpy(mmap_addrstrlen(A),buf,strlen(buf));}sem_post(sem_mmap);} } void* Bfun(void* arg){while(1){sem_wait(sem_mmap);if(*(char*)mmap_addr A){//读出A线程写入的内容printf(B read:%s\n,(char*)mmap_addrstrlen(A));memset(mmap_addr,0,strlen(mmap_addr));//清空缓冲区//写入新数据memcpy(mmap_addr,B,strlen(B));//数据来源标号sprintf(buf,B get A data,B data is %d,i); //新数据memcpy(mmap_addrstrlen(B),buf,strlen(buf));sleep(1);}sem_post(sem_mmap);} }#define FILE_PATH ./mmap int main(){pthread_t tid[2];int fd;//打开文件if((fdopen(FILE_PATH,O_RDWR)) 0){perror(open);return -1;}//创建共享内存映射if((mmap_addr mmap(NULL,4*1024,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0)) MAP_FAILED){perror(mmap);return -1;}memset(mmap_addr,lseek(fd,0,SEEK_END),strlen(mmap_addr));//清空缓冲区close(fd);//创建共享内存映射后可以关闭文件描述符//创建信号量sem_init(sem_mmap,0,1);//创建线程pthread_create(tid[0],NULL,Afun,NULL);pthread_create(tid[1],NULL,Bfun,NULL);while(1);return 0; } 3、System V信号灯 使用SystemV信号灯实现有名信号灯章节的同样功能 A.c代码如下 #include sys/sem.h #include sys/mman.h #include string.h #include stdio.h #include errno.h #include sys/types.h #include sys/stat.h #include fcntl.h #include unistd.h#define FILE_PATH ./mmap union semun {int val; //设置信号灯的初始值struct semid_ds *buf;unsigned short *array; } arg; int main(){int fd;void* mmap_addr NULL;int i0;char buf[100] {0};key_t key;int sem_mmap;struct sembuf semPV;//打开文件if((fdopen(FILE_PATH,O_RDWR)) 0){perror(open);return -1;}//创建共享内存映射if((mmap_addr mmap(NULL,4*1024,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0)) MAP_FAILED){perror(mmap);return -1;}memset(mmap_addr,0,lseek(fd,0,SEEK_END));//清空缓冲区close(fd);//创建共享内存映射后可以关闭文件描述符//创建信号量key ftok(.,1);if((sem_mmap semget(key,1,IPC_CREAT|0666)) -1){perror(sem_get);return -1;}arg.val 1;semctl(sem_mmap,0,SETVAL,arg);//进程间通信memcpy(mmap_addr,A Start SIG,strlen(A Start SIG));while(1){semPV.sem_num 0;semPV.sem_op-1;semPV.sem_flg0;semop(sem_mmap,semPV,1);if(*(char*)mmap_addr B){//读出B进程写入的内容printf(A read:%s\n,(char*)mmap_addrstrlen(B));//读取数据不读取数据来源标号memset(mmap_addr,0,strlen(mmap_addr));//清空缓冲区//写入新数据memcpy(mmap_addr,A,strlen(A));//数据来源标号sprintf(buf,A_Data:%d,i); //新数据memcpy(mmap_addrstrlen(A),buf,strlen(buf));}semPV.sem_num 0;semPV.sem_op1;semPV.sem_flg0;semop(sem_mmap,semPV,1);}return 0; } B.c的代码如下 #include sys/mman.h #include sys/sem.h #include string.h #include stdio.h #include errno.h #include sys/types.h #include sys/stat.h #include fcntl.h #include unistd.h#define FILE_PATH ./mmap union semun {int val; //设置信号灯的初始值struct semid_ds *buf;unsigned short *array; } arg; int main(){int fd;void* mmap_addr NULL;int i0;char buf[100] {0};key_t key;int sem_mmap;struct sembuf semPV;//打开文件if((fdopen(FILE_PATH,O_RDWR)) 0){perror(open);return -1;}//创建共享内存映射if((mmap_addr mmap(NULL,4*1024,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0)) MAP_FAILED){perror(mmap);return -1;}memset(mmap_addr,0,lseek(fd,0,SEEK_END));//清空缓冲区close(fd);//创建共享内存映射后可以关闭文件描述符//创建信号量key ftok(.,1);if((sem_mmap semget(key,1,IPC_CREAT|0666)) -1){perror(sem_get);return -1;}arg.val 1;semctl(sem_mmap,0,SETVAL,arg);//进程间通信while(1){semPV.sem_num 0;semPV.sem_op-1;semPV.sem_flg0;semop(sem_mmap,semPV,1);if(*(char*)mmap_addr A){//读出A进程写入的内容printf(B read:%s\n,(char*)mmap_addrstrlen(A));memset(mmap_addr,0,strlen(mmap_addr));//清空缓冲区//写入新数据memcpy(mmap_addr,B,strlen(B));//数据来源标号sprintf(buf,B get A data,B data is %d,i); //新数据memcpy(mmap_addrstrlen(B),buf,strlen(buf));sleep(1);}semPV.sem_num 0;semPV.sem_op1;semPV.sem_flg0;semop(sem_mmap,semPV,1);}return 0; }
http://www.hkea.cn/news/14293695/

相关文章:

  • 有没有做生物科技相关的网站建筑公司起名大全2021最新版的
  • 河南省建设部网站官网百度站长平台网站体检
  • 高端定制手机网站网站 首页 栏目 内容
  • 百度快速收录开通广州seo营销培训
  • 做网站设计需要具备哪些常用网站建设软件
  • 张家口网站网站建设上海p2p网站建设
  • 网站制作的步骤wordpress首页翻页无效
  • 网站建设公司专业的建站优化公司wap网站生成微信小程序
  • 自适应网站建设服务哪家好wordpress如何上传超过2m
  • 微小店网站建设价格哈尔滨哪里做网站好
  • 西安网站建设是什么福州seo推广外包
  • 佛山电商网站制作网站快速备案被退回的几种原因分析
  • 宁津做网站android编程开发
  • 服装店网页设计网站模板网站建设人力资源分配
  • 长春网站快速优化排名公众号自己做电影网站吗
  • 营销型网站建设教程少女的ppt高清模板免费
  • 溧阳网站优化公关
  • 软件定制开发网站wordpress标题超链接
  • 北辰做网站公司淘宝店铺一年交多少钱
  • 下城区住房和城市建设局网站像wordpress之类的框架
  • 彩票推广网站如何做wordpress新浪微博图床
  • 现在用什么语言做网站网站及系统建设维护
  • 企业网站的建设对于网络品牌的塑造作用wordpress适合百度吗
  • 个人网站备案名字大全建站技术知识
  • 豆芽网站建设 优帮云炫酷的网站开发
  • 熊掌号网站的基础建设费用哪种浏览器可以打开所有网站
  • 网站开发费是无形资产吗淘客网站开发流程
  • 网站结构该怎么做哪个网站做正品女装
  • 慈溪市网站建设深圳市营销型网站建设
  • 如何做网站自适应用html5做的美食网站