关于Linux下的多线程
作者:网络转载 发布时间:[ 2014/2/24 10:44:28 ] 推荐标签:测试技术 开发 操作系统
一、线程的创建
头文件
#include <pthread.h>
函数声明
int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);
在一个线程中调用pthread_create函数创建新的线程后,当前线程从pthread_create处继续往下执行,start_routine为新创建线程的入口函数,start_routine函数接收一个参数,是通过pthread_create的arg参数传递给它的,该参数的类型为void* ,这个指针按什么类型解释由调用者自己定义,start_routine的返回值类型也是void,这个指针的含义同样由调用者自己定义,start_routine返回时,这个线程退出了,其它线程可以调用pthread_join得到start_routine的返回值。
参数说明
第一个参数为指向线程标识符的指针。
第二个参数用来设置线程属性,用于指定各种不同的线程属性。
第三个参数是线程运行函数的起始地址,该函数只有一个指针参数arg,如果需要向start_rtn函数传递的参数不止一个,那么需要把这些参数放到一个结构中,然后把这个结构的地址作为arg的参数传入。
后一个参数是运行函数的参数。
返回值
若线程创建成功,则返回0,若线程创建失败,则返回出错编号,并且*thread中的内容是未定义的。
第一个简单的线程程序
#include <stdio.h>
#include <pthread.h>
void printThread(const char *s)
{
pid_t pid;
pthread_t tid;
pid = getpid();
tid = pthread_self();
printf("%s pid %u tid %u (0x%x)
", s, (unsigned int) pid, (unsigned int) tid, (unsigned int) tid);
}
void* run(void* arg)
{
printThread("new thread: ");
return NULL;
}
int main(void)
{
pthread_t pt;
int err = pthread_create(&pt, NULL, run, NULL);
if (err != 0)
printf("can't create thread: %s
", strerror(err));
printThread("main thread:");
pthread_join(pt, NULL);
return 0;
}
|
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11