linux创建线程pthread_create函数
函数简介
pthread_create是UNIX环境创建线程函数
头文件
#include<pthread.h>
函数声明
int pthread_create(pthread_t *restrict tidp,const pthread_attr_t restrict_attr,void(start_rtn)(void),void *restrict arg);
返回值
若成功则返回0,否则返回出错编号。
参数
第一个参数为指向线程标识符的指针。
第二个参数用来设置线程属性。
第三个参数是线程运行函数的地址。
最后一个参数是运行函数的参数。
编译:
在编译时注意加上-lpthread参数,以调用静态链接库。因为pthread并非Linux系统的默认库
在Linux环境使GCC支持C99标准,使用如下命令编译(test_pthread2为c文件名字):
gcc test_pthread2.c -o test_pthread2 -std=c99 -pthread
pthread_join函数
函数简介
函数pthread_join用来等待一个线程的结束。
函数原型:
extern int pthread_join __P (pthread_t __th, void **__thread_return);
参数说明:
第一个参数为被等待的线程标识符,第二个参数为一个用户定义的指针,它可以用来存储被等待线程的返回值。这个函数是一个线程阻塞的函数,调用它的函数将一直等待到被等待的线程结束为止,
当函数返回时,被等待线程的资源被收回。如果执行成功,将返回0,如果失败则返回一个错误号。
下面通过一个demo来说明这两个接口函数的用法:
#include<stdio.h>
#include<stdlib.h>
#include<pthread.h>
#include <unistd.h>struct pthread_variable
{int number;char *name;
}; void *create_pthread(void *arg)//有void* 型参数传入,不能直接void, void*表示任何类型的参数
{struct pthread_variable *temp;temp=(struct pthread_variable *)arg;//通过指针赋地址给结构体变量赋值 printf("pthread_variable->number: %d\n", temp->number);printf("pthread_variable->name: %s\n", temp->name);sleep(1);return (void *)3; //返回一个指向void的数据类型的值
}int main(int argc, char **argv)
{pthread_t pthread_test;//定义线程标识符struct pthread_variable *var;void* pthread_return;var =(struct pthread_variable *)malloc(sizeof(struct pthread_variable));// 分配内存空间 var->number = 99; //结构体成员赋值var->name = "czd"; if((pthread_create(&pthread_test, NULL, create_pthread, (void*)var)) == -1) //pthread_create创建线程{printf("create pthread error!\n");return 1;}if(pthread_join(pthread_test, &pthread_return)) //调用pthread_join函数,等待线程结束再继续往下执行{printf("thread is not exit...\n");return -2;}printf("thread is exit , is %d\n",(int)pthread_return); //打印线程结束的返回值pthread_returnreturn 0;}
编译执行
在linux环境下执行编译(test_pthread2.c为c文件名,编译生成bin文件:test_pthread2 ):
gcc test_pthread2.c -o test_pthread2 -std=c99 -pthread
运行该bin文件:
zwei@ubt144c:/work/zwei/czd/others/pthread$ ./test_pthread2
pthread_variable->number: 99
pthread_variable->name: czd
thread is exit , is 3
zwei@ubt144c:/work/zwei/czd/others/pthread$
linux创建线程pthread_create函数相关推荐
- linux编程之pthread_create函数
linux编程之pthread_create函数UNIX环境创建线程函数, 具体格式: #include<pthread.h> int pthread_create(pthread_t * ...
- linux 创建线程函数吗,[笔记]linux下和windows下的 创建线程函数
linux下和windows下的 创建线程函数 #ifdef __GNUC__ //Linux #include #define CreateThreadEx(tid,threadFun,args) ...
- 简单了解线程pthread_create函数
在Linux下实现服务器线程的操作 并发 通俗的并发通常是指同时能并行的处理多个任务. 同时拥有两个或者多个线程,如果程序在单核处理器上运行,多个线程将交替的换入或者换出内存,这些线程是同时" ...
- Linux pthread_self和pthread_create函数
pthread_self和pthread_create函数 头文件 #include <pthread.h> 函数原型 pthread_t pthread_self(void); int ...
- Linux创建线程时 内存分配的那些事
文章目录 问题描述 问题分析 针对问题1 的猜测: 针对问题2 的猜测: 原理追踪 总结 问题描述 事情开始于一段内存问题,通过gperf工具抓取进程运行过程中的内存占用情况. 分析结果时发现一个有趣 ...
- 【Android NDK 开发】JNI 线程 ( JNI 线程创建 | 线程执行函数 | 非 JNI 方法获取 JNIEnv 与 Java 对象 | 线程获取 JNIEnv | 全局变量设置 )
文章目录 I . JNI 线程创建 II . 线程执行函数 III . 线程方法获取 Java 对象 IV . 线程方法获取 JNIEnv V . JNI 线程 完整代码示例 I . JNI 线程创建 ...
- 创建线程的函数CreateThread
主线程的进入点函数的名字必须是main.main.WinMain或wWinMain,其它线程必须用不同的名字 主线程的进入点函数传递了字符串参数,因此可以使用 ANSI/Unicode版本的进入点函数 ...
- linux 创建线程 execvp,execvp使用实例
最近学习工作流 推荐一个activiti 的教程文档 全文地址:http://www.mossle.com/docs/activiti/ Activiti 5.15 用户手册 Table of Con ...
- Linux创建线程读取双口数据,linux环境下读写一次双口ram尽然要十几个毫秒。(附驱动代码)...
linux环境下读写一次双口ram尽然要十几个毫秒.(附驱动代码) 我用的双口ram是IDT70V28,手册上说的读写时间应该是几个纳秒,我写了个linux驱动,然后做测试,发现读写一次的时间尽然是十 ...
- linux创建线程未定义,Linux中未定义的对p线程_CREATE的引用
Linux中未定义的对p线程_CREATE的引用#include #include #define NUM_THREADS 5void *PrintHello(void *threadid){ ...
最新文章
- android进度指示器_等待的痛苦—浏览进度指示器地狱的7个级别
- 轻量级web富文本框——wangEditor使用手册(2)——扩展一个“缩进”功能 demo
- oracle11g中的join,sql - 使用Oracle 11g中的+符号进行左外连接
- 分布式事物一致性设计思路
- Linux内核参数(如kernel.shmmax)及Oracle相关参数调整(如SGA_MAX_SIZE)
- centos系统 查看当前python执行的进程
- 电脑插上U盘双击打不开应用程序右键可以打开问题
- clickhouse 数据存储
- 彗星撞地球-Warez组织的经典力作(15G动画压缩成64Kb的那个,2004年的第一名)
- Vue 下载本地静态资源static文件夹
- 【笔记】分类问题的模型评估(Precision, recall, F-measures)
- tools: USB、MiniUSB、MicroUSB接线
- 清除电脑缓存的bat文件
- uni-app活动倒计时功能
- 给定3个数字,求出这3个数字中的最大数,并输出最大数
- nodejs安装及配置
- Python 中的取余与取整操作
- ios手写_如何在iOS 10中发送手写和数字触摸消息
- 1159 Palindrome
- 蓝屏代码0X0000007B的解决办法