posix线程库重要的程度不言而喻,这些天学习这个,参考 https://www.ibm.com/developerworks/cn/linux/thread/posix_thread1/
 
首先先看第一个基本的程序

#include <stdio.h>

#include <pthread.h>

#include <stdlib.h>

#include <unistd.h>

void * thread_function(void * arg)

{

int i ;

for (i=0; i<20; i++) {

printf("thread says hi!\n");

sleep(1);

}

return NULL;

}

int main(int argc, const char * argv[])

{

pthread_t mythread;

if (pthread_create(&mythread, NULL, thread_function, NULL)) {

printf("error creating thread.");

abort();

}

if (pthread_join(mythread, NULL)) {

printf("error joining thread");

abort();

}

return 0;

}

对于要使用posix线程库要引用头文件<pthread.h>,里面所有的函数都是以pthread_t开头。

看main函数,定义一个pthread_t保存线程的ID,具体的结构可以进去看看,大概就是一个结构体如下

struct _opaque_pthread_t { long __sig; struct __darwin_pthread_handler_rec  *__cleanup_stack; char __opaque[__PTHREAD_SIZE__]; };

 
下面就是创建一个线程pthread_create,看一看其定义

int       pthread_create(pthread_t * __restrict,

const pthread_attr_t * __restrict,

void *(*)(void *),

void * __restrict);

 
第一个参数存放线程的ID,
第二个参数可用来定义线程的某些属性。由于缺省的线程属性是适用的,只需将该参数设为 NULL。
第三个参数是线程开始执行时调用的函数的名字。函数的格式必须如下:
void * f(void * arg)
对于上述程序中函数名为thread_function。当thread_function()返回时,线程将终止。返回的void指针将被pthread_join函数当成退出状态来处理。
第四个参数是传递函数f的参数。
对于pthread_create创建成功返回0,不成功返回一个非零的错误码,因此上面放在if上面判断。
 
好,当pthread_create创建成功之后,程序有了两个线程,主程序同样是一个线程,主程序仍然执行,另外一个线程执行完成之后,先停止后与另外的线程合并。
 
下面执行pthread_join,pthread_create是将一个线程分成两个线程,pthread_join是将两个线程合并成一个线程。这个函数将调用这个函数的线程等待指定的线程运行完成再继续执行。

int       pthread_join(pthread_t , void **)

第一个参数为要等待的线程Id

第二个参数给指向返回值的指针提供一个位置,如果为NULL,则我们就不用关心其返回值是啥了

pthread_join就是等待另外的线程执行完成,进行线程合并。这个是有必要的,要注意对线程合理的释放,不然最后可能会导致创建失败。

posix线程库1的更多相关文章

  1. Linux posix线程库总结

    由于历史原因,2.5.x以前的linux对pthreads没有提供内核级的支持,所以在linux上的pthreads实现只能采用n:1的方式,也称为库实现. 线程的实现,经历了如下发展阶段: Linu ...

  2. Posix线程编程指南(2) 线程私有数据

    概念及作用 在单线程程序中,我们经常要用到"全局变量"以实现多个函数间共享数据.在多线程环境下,由于数据空间是共享的,因此全局变量也为所有线程所共有.但有时应用程序设计中有必要提供 ...

  3. posix 线程(一):线程模型、pthread 系列函数 和 简单多线程服务器端程序

    posix 线程(一):线程模型.pthread 系列函数 和 简单多线程服务器端程序 一.线程有3种模型,分别是N:1用户线程模型,1:1核心线程模型和N:M混合线程模型,posix thread属 ...

  4. 浅谈POSIX线程的私有数据

    当线程中的一个函数需要创建私有数据时,该私有数据在对函数的调用之间保持一致,数据能静态地分配在存储器中,当我们采用命名范围也许可以实现它使用在函数或是文件(静态),或是全局(EXTERN).但是当涉及 ...

  5. POSIX 线程详解(经典必看)

    http://www.cnblogs.com/sunminmin/p/4479952.html 总共三部分: 第一部分:POSIX 线程详解                               ...

  6. 转载:Posix线程编程指南(2)

    概念及作用 在单线程程序中,我们经常要用到"全局变量"以实现多个函数间共享数据.在多线程环境下,由于数据空间是共享的,因此全局变量也为所有线程所共有.但有时应用程序设计中有必要提供 ...

  7. Posix线程编程指南

    Posix线程编程指南 Posix线程编程指南... 1 一线程创建与取消... 2 线程创建... 2 1.线程与进程... 2 2. 创建线程... 2 3. 线程创建属性... 2 4. 创建的 ...

  8. Posix线程编程指南(2)

    这是一个关于Posix线程编程的专栏.作者在阐明概念的基础上,将向您详细讲述Posix线程库API.本文是第2篇将向您讲述线程的创建与取消. 一.概念及作用在单线程程序中,我们经常要用到"全 ...

  9. Posix线程编程指南(3)

    这是一个关于Posix线程编程的专栏.作者在阐明概念的基础上,将向您详细讲述Posix线程库API.本文是第三篇将向您讲述线程同步. 一.互斥锁尽管在Posix Thread中同样可以使用IPC的信号 ...

随机推荐

  1. 洛谷P1396营救(最小生成树)

    题目描述 “咚咚咚……”“查水表!”原来是查水表来了,现在哪里找这么热心上门的查表员啊!小明感动的热泪盈眶,开起了门…… 妈妈下班回家,街坊邻居说小明被一群陌生人强行押上了警车!妈妈丰富的经验告诉她小 ...

  2. android 中的Context(一)

    context的功能如此强大,它是activity的父类. public abstract class Context { ... public abstract Object getSystemSe ...

  3. [ USACO 2018 OPEN ] Out of Sorts (Gold)

    \(\\\) \(Description\) 运行以下代码对一长为\(N\)的数列\(A\)排序,不保证数列元素互异: cnt = 0 sorted = false while (not sorted ...

  4. 仿win8磁贴界面以及功能

    做移动产品界面占很大的一部分,同时也是决定一款产品好的的重要因素,最近看见有人放win8的界面效果,搜了两款,一款是只是仿界面没有特效,另一款是自定义组件能够实现反转效果,今天分析一下这两类界面. 仿 ...

  5. RPU4+1视图(转)

    4+1视图模型概况 Kruchten 提出了一个"4+1"视图模型,从5个不同的视角包括包括逻辑试图.进程视图.物理视图.开发视图.场景视图来描述软件体系结构.每一个视图只关心系统 ...

  6. C# Task多线程

    来自Eleven老师示例 private void btnTask_Click(object sender, EventArgs e) { Console.WriteLine(); Console.W ...

  7. Python之操作Excel、异常处理、网络编程

    知识补充: 1.falsk模块中一些方法总结 import flask from flask import request,jsonify server = flask.Flask(__name__) ...

  8. POJ3278——Catch That Cow

    Catch That Cow Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 114140   Accepted: 35715 ...

  9. POJ-2135-Farm Tour(最大费用最小流)模板

    Farm Tour POJ - 2135 When FJ's friends visit him on the farm, he likes to show them around. His farm ...

  10. 名字竞技场 V3.0

    更新内容 1.加入新boss,更高的难度. 2.支持组队模式勒! 3.针对大家反应的人物属性算法进行了修改,现在人物属性更多的取决于名字而不是随机数 4.用户界面优化 INF.代码拿走赞留下,不然你赢 ...