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

wordpress公司网站模板做直播信号网站

wordpress公司网站模板,做直播信号网站,怀化三中网站,互联网有限公司前面用了高级IO去实现鼠标和键盘的读取&#xff0c;也说过要用多进程方式进行该操作&#xff1a; int mian(void) {int ret-1;int fd-1;char bug[100]{0};retfork();if(0ret){//子进程&#xff0c;读鼠标}if(0<ret){//父进程&#xff0c;读键盘}else{perror("fork&quo…

        前面用了高级IO去实现鼠标和键盘的读取,也说过要用多进程方式进行该操作:

int mian(void)
{int ret=-1;int fd=-1;char bug[100]={0};ret=fork();if(0==ret){//子进程,读鼠标}if(0<ret){//父进程,读键盘}else{perror("fork");}}

        使用多线程实现宏观上的并发方法:①cpu分时复用,单核cpu实现宏观上并发;②实现多任务系统需求(多任务的客观需求)。是任务轮询,让cpu能干更多的活。

        进程技术的劣势:①进程间相互切换的开销很大,因为每执行一次进程切换,又轮到当前进程时候需要读出断点,再切换进程以此往复。②进程与进程间又天生的隔离,通信效率低。

        解决方案——使用线程技术。线程救赎保留了进程多任务的特性,改进了线程间切换与通信的效率,多线程在多核心cpu上更具有优势。

int pthread_create(pthread_t *thread, const pthread_attr_t *attr,void *(*start_routine) (void *), void *arg);
void *func(void *arg)
{//读键盘
}int main(void)
{pthread_t th=-1;ret=pthread_create(&th,NULL,func,NULL);if(ret!=0){err;return -1;}//开始主任务,读鼠标
}

        编译时,使用-lpthread链接线程库:

gcc xxx.c -lpthread

        线程是一种轻量的进程,线程是参与调度的最小单元,一个进程可以有多个线程。

        线程的优势,①像进程一样能被OS单独调度。②同一进程的多个线程间的通信十分简单(就是函数与函数间通信一样的简单)。③多核心的cpu架构下效率能最大化,多线程运行在不同的核心上,多核cpu(堆成多处理器架构SMP)。

        线程常用函数:

        ①进程创建于回收

pthread_create()主线程创建子进程
pheread_join()主线程用于等待回收子线程
pheread_detach()主线程于子线程分离,分离后自己回收自己

        ②线程取消:一个线程可以被另一个线程中止

pthread_cancel()一个线程调用,终止另一个线程(主销子)
pthread_setcancelstate()子线程对线程取消信号的反应(线程十分运行被信号终止)
pthread_setcanceltype()线程终止时候的模式

        ③线程函数退出相关:子线程自己return一类

pthread_exit()子线程标准退出麻烦和值给pthread_join
pthread_cleanup_push()线程同步相关,用于清理的函数压栈保存
pthread_pop用着清理函数的取出是否执行,保证cleanup的函数能在主线程结束时依然能执行于保存

        ④获得自己的线程ID

pthread_self()

        pthread的p是posix是Unix标准。

        线程同步的方法——信号量。

        使用线程实现一个线程输入字符,一个线程统计输出。

        子线程void func(void *arg):①子线程是一个循环。②子线程阻塞等单子线程激活,等待传递buf。③计数完成,变为阻塞态,等待主线程buf。

        主线程int main()①创建子线程。②接受字符串。③激活子线程干活实现线程同步。

        

char buf[200]={0};
sem_t sem;void *func(void *arg)
{sem_wait(&sem);//阻塞等待信号while(strncmp(buf,"end",3)!=0){printf("本次打印%d个字符\n",strlen(buf));memset(buf,0,sizeof(buf));sem_wait(&sem);//阻塞while}pthread_exit(NULL);//线程return
}int main(void)
{int ret=-1;pthread_t th=-1;//线程属性sem_init(&sem,0,0);//信号初始化ret=pthread_create(&th,NULL,func,NULL);if(0!=ret){线程申请errexit(-1);}printf("输入一个字符串\n");while(scanf("%s",buf)){if(!strncmp(buf,"end",3))//接收到end字符{printf(“end\n”);sem_post(&sem);//发信号,子线程做最后一次判别工作break;}sem_post(&sem);//正常接受字符串,发信号通知子线程干活}//回收子线程ret=pthread_join(th,NULL);//(线程号,参数)if(0!=ret){回收失败exit(-1);}sem_destroy(&sem);//回收信号return 0;
}

        本次使用的信号,基本上是让程序称为盘子里的鱼,戳一下,动一下,也就是很像flag,1表示work,0表示不动,每动一下flag就置位为0那种。

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

相关文章:

  • 网站开发前端php 后端python做视频网站设备需求
  • 人跟狗做网站高端大气的广告公司名字
  • 开发手机端网站模板下载不了网站建设需要多少个人
  • 给个人建网站的公司网络推广外包注意哪些
  • 建立应用网站滴滴出行网站建设
  • 汕头网站设计公司app网站开发书籍下载
  • 一级做A网站展馆设计流程
  • 常用的软件开发文档莱芜网站优化招聘网
  • 一站式做网站多少钱福州网站开发系列
  • 最全做暖暖网站wordpress美化插件大全
  • 阜宁网站制作公司报价石家庄教育平台网站建设
  • 怎样在网站上做友情链接天元建设集团有限公司单位性质
  • 视频网站seo实战肃宁县网站建设
  • 茶文化网站制作网站介绍经过下拉怎么做
  • 西安网站开发建郑州市做网站
  • 北京市工程建设信息交易网站哪些网站做外贸效果好
  • 邓州网站优化品牌策划案模板
  • 做网站的素材哪里找的广西新闻最新消息今天
  • 平台型网站建设预算表网站seo策略
  • 涉县专业做网站单页面网站如何seo
  • 网站制作 牛商网网站正在建设中中文模板
  • 南阳网站建设培训h5开发环境
  • 唐山网站制作方案长沙手机网站首页设计公司
  • 公司做网站要注意什么别墅装修设计图片大全 效果图
  • 做打鱼网站犯法不成熟的国产crm系统
  • 网站做404网站建设维护杭州
  • 易销云建站公司国家信息企业公示系统查询
  • 二维码怎么做网站网站访问量
  • 网站建设系统设计产品软文范例1000字
  • 企业网站模板下载哪家好徐州网站建设优化宣传