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

政务公开网站建设重点网站制作论文 优帮云

政务公开网站建设重点,网站制作论文 优帮云,学习做网站,优秀网站作品进程和线程进程:一个正在运行的程序。状态:就绪,运行,阻塞;线程是进程中的一个执行路径,一个进程中至少有一个主线程(main函数);有多条执行路径为多线程。创建一个线程用…

进程和线程

进程:一个正在运行的程序。

状态:就绪,运行,阻塞;

线程是进程中的一个执行路径,一个进程中至少有一个主线程(main函数);

有多条执行路径为多线程。

创建一个线程

用pthread_create()创建

记得编译的时候后面加-pthread

多个线程用同一个进程的地址空间

#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<string.h>
#include<pthread.h>
void *fun(void *arg)//这是一个线程
{for(int i=0;i<5;i++){printf(“fun run\n”);sleep(1);
}
pthread_exit(“fun over”);//可以返回线程信息给主线程
}
int main()
{pthread_t id;
//create执行一次创建一个进程pthread_create(&id,NULL,fun,NULL);//创建了一个fun线程for(int i=0;i<5;i++){printf(“main run\n”);sleep(1);
}
char *s = NULL;pthread_join(id,(void**)&s);
//等待线程返回的信息,如果子线程没有运行完,主线程会被阻塞,可以防止fun线程没有运行完main就结束。
printf(“s=%s\n”,s);//不能用临时变量
exit(0);
}

两个路径同时进行,主函数(主进程)退出,其余进程也会结束,尽量让主函数慢点退出,sleep一下。

当然,用了pthread_join();接收返回信息阻塞可以不用sleep

了解程序的并发运行

并行是特殊的并发,我的虚拟机有4个处理器,所以准确来说这几个线程应该是并行的。

同时创建多个线程并打印自己是第几个线程:

#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<string.h>
#include<pthread.h>
void *fun(void *arg)//这是一个线程
{int index = *(int*)arg;printf(“index=%d\n”,index);
sleep(1);printf(“index=%d\n”,index);
pthread_exit(NULL);//可以返回线程信息给主线程
}
int main()
{pthread_t id[5];
//create执行一次创建一个进程
int i=0;for(i=0;i<5;i++)
{pthread_create(&id[i],NULL,fun,(void*)&i);//创建线程,传地址
}
for(i=0;i<5;i++)
{pthread_join(id[i],NULL);
}exit(0);
}

运行结果:

程序运行有不确定性(少用多线程)

因为线程获取i是靠i的地址,可能第一次循环的时候这些线程还没来得及获取i的值,到第二个for循环i被置0时才取得i的值,所以线程输出全是0。

获取i的值的速度差不多(同时获取值出现几个相同的),写入缓冲区的速度不一样不一定从0到4。

#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<string.h>
#include<pthread.h>
int g_count = 1;
void *fun(void *arg)//这是一个线程
{for(int i=0;i<1000;i++){printf(“g_count=%d\n”,g_count++);}
pthread_exit(NULL);//可以返回线程信息给主线程
}
int main()
{pthread_t id[5];
//create执行一次创建一个进程for(int i=0;i<5;i++)
{pthread_create(&id[i],NULL,fun,NULL);//创建线程,传地址
}
for(int i=0;i<5;i++)
{pthread_join(id[i],NULL);
}exit(0);
}

理想的结果应该是5000,每个线程加1000次,但是结果会出现4999,4998等,这是因为两个进程同时执行了++,然后把数值存回去,本来应加两次变成了加一次,导致结果变小了。

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

相关文章:

  • 做网站必看的外国书籍免费个人简历表
  • 东莞保安公司有多少家桂平seo快速优化软件
  • 又拍网站怎么做有没有专门做一件代发的网站
  • wordpress.rar关键词优化是什么
  • 盐城北京网站建设转转网站怎么建设
  • 网站建设合同中英文模板如何汉化wordpress插件
  • 肇庆关键词网站排名百度手机端排名如何优化
  • 省建设厅执业资格注册中心网站软件技术一个月工资多少
  • 如何快速搭建自己的网站近的中医小程序定制
  • 老渔哥网站建设公司聊城做网站优化
  • 为什么网站在本地看没问题上传之后没有内容呢?运城做网站公司
  • 网站建设大作业提交要求一定火网站建设定制
  • 企业官方网站怎么建设wordpress文章添加动态数据
  • dw做的网站成品百度关键字搜索量查询
  • 如何做网上销售网站哪建设网站好
  • 企业级网站开发与部署劳务公司网站怎么做
  • 如何建设与维护网站网站开发的收获与体会
  • 公司网站购买主机seo优化
  • 酷站是什么网站网站源码 一品资源网
  • 山东兴润建设有限公司网站暴雪战网官网
  • 绥化网站建设庆阳网站设计公司
  • 北京市住房城乡建设部网站首页公司网站设计案例
  • 做网站用asp和htmlwordpress 账号 登陆不了
  • 郑州网站建设学校好大夫在线医生免费咨询
  • 网站游戏正规网站建设校园网站建设软件
  • 怎么样做购物网站网站建设的三要素
  • 网站与网页设计教程1688官网app
  • 网站外链平台的建设方法平台类型(至少5个)?全网营销思路
  • 电商网站 设计方案建好网站后如何向里面加东西
  • 昆明网站建设推荐谁好呢wordpress 引用样式表