pthread的pthread_join()函数理解实验
一、使用方式
pthread_t tid;
pthread_create(&tid, NULL, thread_run,NULL);
pthread_join(tid,NULL);
创建线程之后直接调用pthread_join方法就行了。
二、为什么要使用pthread_join(www.douniu157.com)
在很多情况下,主线程生成并起动了子线程,如果子线程里要进行大量的耗时的运算,主线程往往将于子线程之前结束,但是如果主线程处理完其他的事务后,需要用到子线程的处理结果,也就是主线程需要等待子线程执行完成之后再结束,这个时候就要用到pthread_join()方法了。
即pthread_join()的作用可以这样理解:主线程等待子线程的终止。也就是在子线程调用了pthread_join()方法后面的代码,只有等到子线程结束了才能执行。
三、代码实验
可以通过代码来看看执行的效果,就知道了:
[cpp] view plain copy
#include "stdafx.h"
#include <pthread.h>
#include <stdio.h>
#include <Windows.h>
#pragma comment(lib, "pthreadVC2.lib")
static int count = 0;
void* thread_run(void* parm)
{
for (int i=0;i<5www.douniu157.com;i++)
{
count++;
printf("The thread_run method count is = %d\n",count);
Sleep(1000);
}
return NULL;
}
int main(www.thd580.com)
{
pthread_t tid;
pthread_create(&tid, NULL, thread_run,NULL);
// 加入pthread_join后,主线程"main"会一直等待直到tid这个线程执行完毕自己才结束
// 一般项目中需要子线程计算后的值就需要加join方法
pthread_join(tid,NULL);
// 如果没有join方法可以看看打印的顺序
printf("The count is = %d\n",count);
getchar(www.wmyl11.com
);
return 0;
}
加了pthread_join()方法的打印:
如果把里面的pthread_join()方法注释掉的打印:
可以看得出来,如果没有加pthread_join()方法,main线程里面直接就执行起走了,加了之后是等待线程执行了之后才执行的后面的代码。
索尼在VR头显市场占据优势与它广受欢迎的PS游戏机有关,许多用户购买索尼VR玩VR游戏,内容是索尼的重要竞争优势,其全球PS游戏机存量有数千万,这成为推动它的VR出货量持续增长的主要动力。
Oculus曾经落后于HTC,不过在它对VR产品大降价后份额出现显著增长,为了取得市场份额的增长它一举将VR售价降至400美元,相比之下HTC刚发布的vive Pro为799美元起,现款vive售价降价100美元后售价依然达到499美元起。在HTC占据优势的Steam平台上,HTC如今领先Oculus仅1个百分点,这体现出HTC在VR市场的竞争力不如对手。
HTC当下正极力寻求从VR业务上取得盈利,可是从当前市场竞争不利于它的情况下这一目标似乎难以实现。在手机业务日益衰败和VR市场竞争处于不利的局面下,实在看不到HTC的前景到底在哪里?
pthread的pthread_join()函数理解实验的更多相关文章
- 关于pthread里面一些函数的使用心得!
第一次使用pthread,遇到的问题还真不少,现在我一一记录一下: 1.关于编译时出现 对‘pthread_create’未定义的引用 之类的错误的解决:由于pthread库不是Linux系统默认的库 ...
- [转帖]C语言计算时间函数 & 理解linux time命令的输出中“real”“user”“sys”的真正含义
C语言计算时间函数 & 理解linux time命令的输出中“real”“user”“sys”的真正含义 https://blog.csdn.net/willyang519/article/d ...
- 【Linux程序设计】之环境系统函数综合实验
这个系列的博客贴的都是我大二的时候学习Linux系统高级编程时的一些实验程序,都挺简单的.贴出来纯粹是聊胜于无. 实验题目:Linux环境下系统函数综合实验 实验目的:熟悉并掌握Linux环境下数学函 ...
- MySQL的COUNT()函数理解
MySQL的COUNT()函数理解 标签(空格分隔): MySQL5.7 COUNT()函数 探讨 写在前面的话 细心的朋友会在平时工作和学习中,可以看到MySQL的COUNT()函数有多种不同的参数 ...
- JavaScript-闭包函数(理解)
JavaScript-闭包函数(理解) var foo = function (a) { return function inner () { console.log(a) } } var faa = ...
- 图片放大功能插件及jquery.extend函数理解
前端时间,产品提出社区评论中的图片需要有放大功能.感觉可以共用,所以就想整合一个插件,过程中也借鉴了一些例子. 分析下自己的代码思路: var scaleImg = function(opts) { ...
- jquery函数理解与运用
javascript中有多种不用的方式去理解函数,函数类似于我们以前学过的数学函数,但是在程序设计中,我是按照下面的方式进行理解: 函数的理解: 函数是一个代码块,内容被包含在函数内,通常我们是把一些 ...
- C语言函数指针实验
上次看Atmel的示例工程,发现人家使用了函数指针的结构体(函数指针结构体).感叹人家的C语言功夫审核,自己费劲还是只能读懂的份.不过,函数指针确实好用.今天就试试这个超牛的东西.Now let's ...
- public static void main(String[] args){}函数理解
主函数的一般写法如下: public static void main(String[] args){…} 下面分别解释这些关键字的作用: (1)public关键字,这个好理解,声明主函数为publi ...
随机推荐
- python 内置模块(os)
1.OS os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径os.chdir("dirname") 改变当前脚本工作目录:相当于shell下cdos. ...
- MQ配置安装
一,MQ安装 ./mqlicense.sh -accept rpm -ivh MQSeries*.rpm -- rpm -qa|grep MQSeries 二,MQ配置 环境变量配置(MQM)实际安 ...
- 关于Eclipse在servlet中连接数据库时出现驱动加载失败的解决
问题:在队友发来的项目中想将他获取到的数据通过数据库储存,出现驱动加载失败问题 解决:首先百度了下相关情况,大多数都是说下载mysql-connector-java-5.1.39-bin.jar包,然 ...
- Lua学习笔记(2): 流程控制与循环以及初涉迭代器
条件判断语句 --if...语句 if (表达式) then --表达式为1时执行的语句 end --if...else语句 if (表达式) then --表达式为1时执行的语句 else --表达 ...
- 杂谈微服务架构下SSO&OpenAPI访问的方案。
本篇杂谈下微服务架构下WEB应用的浏览器与OpenAPI访问架构与方案.读者可对比传统架构下应用的此话话题的区别.或者有其它方案的欢迎交流
- 构建树形结构数据(全部构建,查找构建)C#版
摘要: 最近在做任务管理,任务可以无限派生子任务且没有数量限制,前端采用Easyui的Treegrid树形展示控件. 一.遇到的问题 获取全部任务拼接树形速度过慢(数据量大约在900条左右)且查询速度 ...
- Windows下使用7-zip命令自动备份文件
在上一篇博文中,介绍了使用WinRAR自动备份文件,后来改用了腾讯云服务器,上面默认没有安装WinRAR,只有7-zip,又不想在服务器上安装许多软件,就查了下7-zip的命令,贴出来备忘~ 系统环境 ...
- 微信小程序---scroll-view在苹果手机上触底或触顶页面闪动问题
在项目开发中遇到一个关于scroll-view的的问题,具体如下: 项目要求是横向滚动,由于直接在scroll-view组件设置display:flex不生效,因此考虑直接在scroll-view下增 ...
- mariadb BINLOG_FORMAT = STATEMENT 异常
当在mariadb中插入数据是报 InnoDB is limited to row-logging 异常: java.sql.SQLException: Cannot execute statemen ...
- preg_replace 以及弃用的e
preg_replace (PHP 4, PHP 5) preg_replace — 执行一个正则表达式的搜索和替换 说明¶ mixed preg_replace ( mixed $pattern , ...