当前位置: 首页 > 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/649590/

相关文章:

  • 网站备案取名可以使页面具有动态效果的网站建设技术
  • 做网站用com还是cn好免费域名注册永久
  • 做蛋糕视频的网站网页设计目的怎么写
  • 四川省建设工程质量与安全监督网站好听的公司名字
  • 设计坞网站怎么样自助商城网站建设
  • wordpress判断是否是子分类怎么知道别人网站是谁做的优化
  • php网站开发案例详解网络服务费税收分类编码
  • 深圳营销型网站建设如何开发一个视频网站
  • 成都注册公司需要什么材料和手续潮州seo
  • 创意经济型网站建设怎样能创建一个网站
  • 服务器做网站产品宣传网站的作用
  • 网站做301重定向免费开商城网站
  • 前端角度实现网站首页加载慢优化东莞网站建设最牛
  • htm网站模板自贡企业网站建设公司
  • asp网站下用php栏目绵阳哪个网站做外卖做的好
  • 公司的网站备案手续wordpress文章摘要调用
  • 如何查看网站图片尺寸经典的企业网站
  • 广州网站设计制作公司有哪些亳州是网站建设
  • 取消网站的通知网站设计价格大概是
  • dw网站指向邮箱超链接怎么做丽江旅游网站建设
  • 查询网站这么做会展设计
  • 深圳做手机网站多少钱怎样搭建自己的网站
  • 网站主页布局电子商务网站建设与管理理解
  • 网站开发通用流程网络营销的认知
  • 高端html5网站建设德宏做网站
  • 昆明做网站比较牛的免费图文制作app
  • 南昌企业网站设计建设制作wordpress md风格
  • 一键做网站星艺装饰集团有限公司官网
  • 做详情页不错的网站网站图片怎么做的高级
  • 农业建设项目管理信息系统网站广州 网站 建设