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

保定网站建设咨询网站开发项目计划

保定网站建设咨询,网站开发项目计划,ui设计好学吗,做公司网站的模板线程间同步机制 概述保护机制互斥锁创建互斥锁  pthread_mutex_init加锁  pthread_mutex_lock解锁  pthread_mutex_unlock删除锁  pthread_mutex_destroy 条件变量创建条件变量  pthread_cond_init激活条件变量  pthread_cond_signal等待条件变量  pthread_cond_… 线程间同步机制 概述保护机制互斥锁创建互斥锁  pthread_mutex_init加锁  pthread_mutex_lock解锁  pthread_mutex_unlock删除锁  pthread_mutex_destroy 条件变量创建条件变量  pthread_cond_init激活条件变量  pthread_cond_signal等待条件变量  pthread_cond_wait删除条件变量  pthread_cond_destroy 信号灯创建信号量  sem_init信号量加保护  sem_wait信号量解保护  sem_post信号量删除  sem_destroy 线程间通信的例子 概述 同进程内的所有线程共同使用进程的内存空间并且线程可以在直接应用层完成因此线程和线程之间的通信使用“全局变量”即可完成通信。但是由于 Linux 系统没有数据保护方式所在在线程通信的时候需要进行数据的“同步保护”。   在同进程中的多个线程都要操作的数据进行保护时只允许一个线程操作要保护的内容。Linux 系统使用“信号量”、“互斥锁”以及“条件变量”来实现数据同步保护。实现数据保护的流程为 ①创建一种使用的保护机制(信号量、互斥锁或条件变量)。 ②在操作保护内容之前加保护(一旦本线程加保护成功其他线程在操作就会阻塞)。 ③在操作保护内容后解保护(其他线程自动取消阻塞)。 ④删除保护机制。 注线程间的数据保护机制是一种人为的约束一定要所有线程都要遵循这个操作才会有意义同时“加保护”、“解保护”操作在一个线程中一定要成对出现。 保护机制 互斥锁 创建互斥锁  pthread_mutex_init 头文件   #include pthread.h 函数原型int pthread_mutex_init(pthread_mutex_t *restrict mutex,const pthread_mutexattr_t *restrict attr); 参数介绍   mutex互斥锁编号。   attr互斥锁的属性。 返回值成功返回 0失败返回-1并且设置 errno 变量来指示错误的发生。 pthread_mutex_t mutexid;pthread_mutex_init(mutexid,NULL);加锁  pthread_mutex_lock 头文件   #include pthread.h 函数原型int pthread_mutex_lock(pthread_mutex_t *mutex); 参数介绍   mutex互斥锁编号。 返回值成功返回 0失败返回-1并且设置 errno 变量来指示错误的发生。 pthread_mutex_lock(mutexid);解锁  pthread_mutex_unlock 头文件   #include pthread.h 函数原型int pthread_mutex_unlock(pthread_mutex_t *mutex); 参数介绍   mutex互斥锁编号。 返回值成功返回 0失败返回-1并且设置 errno 变量来指示错误的发生。 返回值 pthread_mutex_unlock(mutexid);删除锁  pthread_mutex_destroy 头文件   #include pthread.h 函数原型int pthread_mutex_destroy(pthread_mutex_t *mutex) 参数介绍   mutex互斥锁编号。 返回值成功返回 0失败返回-1并且设置 errno 变量来指示错误的发生。 返回值 pthread_mutex_destroy(mutexid);条件变量 创建条件变量  pthread_cond_init 头文件   #include pthread.h 函数原型int pthread_cond_init(pthread_cond_t *restrict cond,const pthread_condattr_t *restrict attr); 参数介绍   cond条件变量编号。   mutex条件变量的属性。 返回值成功返回 0失败返回-1并且设置 errno 变量来指示错误的发生。 pthread_cond_t condid;pthread_cond_init(condid,NULL);激活条件变量  pthread_cond_signal 头文件   #include pthread.h 函数原型int pthread_cond_signal(pthread_cond_t *cond); 参数介绍   cond条件变量编号。 返回值成功返回 0失败返回-1并且设置 errno 变量来指示错误的发生。 pthread_cond_signal(condid);等待条件变量  pthread_cond_wait 头文件   #include pthread.h 函数原型int pthread_cond_wait(pthread_cond_t *restrict cond,pthread_mutex_t *restrict mutex); 参数介绍   cond条件变量编号。   mutex条件变量的属性。 返回值成功返回 0失败返回-1并且设置 errno 变量来指示错误的发生。 pthread_cond_wait(condid,mutexid);删除条件变量  pthread_cond_destroy 头文件   #include pthread.h 函数原型int pthread_cond_destroy(pthread_cond_t *cond); 参数介绍   cond条件变量编号。 返回值成功返回 0失败返回-1并且设置 errno 变量来指示错误的发生。 pthread_cond_destroy(condid);信号灯 创建信号量  sem_init 头文件   #include semaphore.h 函数原型int sem_init(sem_t *sem, int pshared, unsigned int value); 参数介绍   sem信号量编号。   pshared信号量在作用范围(0本进程中多个线程共享可用非 0在当前登录用户的多个进程之间共享)。   value信号量的信号值。 返回值成功返回 0失败返回-1并且设置 errno 变量来指示错误的发生。 sem_t semid;sem_init(semid,0, 1);信号量加保护  sem_wait 头文件   #include semaphore.h 函数原型int sem_wait(sem_t * sem); 参数介绍     sem信号量编号。 返回值成功返回 0失败返回-1并且设置 errno 变量来指示错误的发生。 sem_wait(semid);信号量解保护  sem_post 头文件   #include semaphore.h 函数原型int sem_post(sem_t * sem); 参数介绍     sem信号量编号。 返回值成功返回 0失败返回-1并且设置 errno 变量来指示错误的发生。 sem_post(semid);信号量删除  sem_destroy 头文件   #include semaphore.h 函数原型int sem_destroy(sem_t * sem); 参数介绍     sem信号量编号。 返回值成功返回 0失败返回-1并且设置 errno 变量来指示错误的发生。 sem_destroy(semid);线程间通信的例子 #include stdio.h #include stdlib.h #include sys/types.h #include sys/stat.h #include sys/types.h #include sys/wait.h #include string.h #include fcntl.h #include unistd.h #include errno.h #include sys/types.h #include pthread.h #include semaphore.h char path[10]; //信号服务函数 void * son_fun(void * arg) {int fd2 open(path,O_RDWR); //打开读管道while(1){char rb[512] {0};read(fd2,rb,sizeof(rb)); printf(%s说%s\n,(char *)arg,rb); }close(fd2); //关闭读管道 } //关于argv // 1 是读通道 2 是写通道 3 是自己的信号 4 是发的信号 int main(int argc,char *argv[]) {//initpthread_t id;strcpy(path,argv[2]);//创建管道int val1 mkfifo(argv[1],0666);int val2 mkfifo(argv[2],0666);//打开管道int fd1 open(argv[1],O_RDWR); //写管道//创建子线程pthread_create(id,NULL,son_fun,he say);//创建子线程//等待写入while(1){char wb[512] {0};gets(wb);write(fd1,wb,strlen(wb));}close(fd1);pthread_join(id,NULL);return 0; }
http://www.huolong8.cn/news/127938/

相关文章:

  • 湘潭学校网站建设 磐石网络专注北京建设工程主管部门网站
  • 固原市住房和城乡建设局网站美术馆网站建设概述
  • 低价网站建设推广报价网页小游戏的网站
  • 域名网站网站权重如何合理分配
  • 网站制作品牌有哪些八百客crm系统登录入口
  • 怎样给自己做网站耳机商城网站开发
  • html公益网站模板北京十大影视公司
  • 做网站首页应该考虑什么山东天成建设工程有限公司网站
  • 哪里有好的免费的网站建设建设与管理局网站
  • 可登录的网站有哪些下载安装注册app
  • 外贸php网站源码达内网站开发课程
  • 山西做网站推广为什么简洁网站会受到用户欢迎
  • 郑州做网站公司msgg含山县建设局网站下载
  • 房屋网站模板制作网页系统
  • 无锡做网站企业做箱包关注哪个网站
  • 网站版式在国外视频网站做中国美食
  • 高级网站开发培训自己做的视频网站如何赚钱
  • 陕西交通建设集团网站贴吧wordpress文章上下一篇 图片
  • 随州做网站公司网站建设开题报告论述
  • 美橙网站开发wordpress带会员中心模板
  • 长春做网站优化网站如何优化
  • 定制网站成本多少网页设计教程详细步骤ppt
  • 企业发展历程网站wordpress系列教程
  • 网站seo描述wordpress进不去仪表盘
  • 重庆网站设计免费看视频的软件是什么
  • 网站开发转移合同网站模版上线需要什么
  • 响应式网站效果图做多大的青岛网站建设运营
  • 上海做网站哪家便宜芙蓉建设官方网站
  • 长沙网站建设及推广公司智慧团建网站密码忘了
  • 阿里巴巴外贸学院北京网站优化