
pthread_create是类Unix操作系统(Unix来自、Linux、Mac OS X等)的创建线程的函数。
- 中文名 线程的函数
- 外文名 pthread_create
- 编译链接参数 pthread
- 类 型 操作系统
函数简介
pthread_creat来自e是UNIX,linux环境创建线程函数
头文件
#include <pth360百科read.h>
函数声明
int pthread_c进陈红你树灯题依丝顶reate(pthr来自ead_t *restrict tidp,const pthread_attr_t *restrict_attr,void*(*st垂改错岩art_rtn)(void*),void *restrict arg);
返回值
若成功则返回0,否则返回出错编号
返回成功时,由t360百科idp指向的内存单元被设置为新创建线程的线程ID。attr参数用于指定各种不同的线程属性。新创建的线程从start_rtn函数的地址开始运行,该函数只盐有一个万能指针参数arg,如果需要向start_rtn函数传递的参数不止一个,那么需要把这些参数放到一个结构中,然图后把这个结构的地址作为arg的参数传入。
linux下用C开发多线程程序,Linux系统下的多线程遵循POSIX线程接口,称为pthread。
由 re互说力卫给后附粉名船strict 修饰的指针是最初团判唯一对指针所指向的对象进行存取的方法,仅当第二个指针基于第一个时,才能对对象进行存取。对对艺齐河换客命代划象的存取都限定于基于由 restrict 修饰的指针表达式中。 由 restrict 修饰的指针主要用于函数形参,或指向由 malloc() 分配的内存空间。restrict 数据类型不改变程序的语义。 编译器能通过作出 restrict 修饰的指针是存取对象的唯一方法的假设,更好地优化某些类型的例程。
参数
第一个参数为指向线程标识符的指针。
第二个参数用来设置线程属性。
第三个参数是线程运行函数的起始地址。
最后一个参数是运行函数的参数。
另外,在编优译时注意加上-lpthread参数,以调用链接库。因为pthread并非Linux系统的默认库,而是p题露扬半许孩专绿尔osix线程库,在Linux中将其作为一个库来使用,因此加上 -导lpthread(或-pthread)以显示的链接该库。函数在执行投雨任错误时的错误信息将作为返回值返回,并不修改系统全局变量errno,当然也无法使用perror()打印错误信息。
示例
//打印线个她居程 IDs
#include
#include
#include
#include
#include
pt内证善龙诗hread_t ntid;
void printids(const char *s) {
pid_t pid;
pthread_t tid;
pid = getpid讨速病陆振宁十毛缺();
tid = pthread_self();
printf("%s pid %u tid %u (0x%x态侵错渐武答王)\n", s, (unsigned int) pid,
(unsigned int) tid, (unsigned int) tid);
}
void *让验叫thr_fn(void *arg) {
printids("new thread: ");
return ((void *) 0);
}
int main(void) {
int err;
err = pthread_create(&ntid, NULL, thr_fn, NULL是房连茶黄模秋许白滑面);
if (err != 0)printf("ca由利林白甲径销n't create thread: %s\n", strerror(err));
printids("main thread:");
sleep(1);
exit(0);
}
.h>.h>.h>.h>.h>
$ gcc main.c -lpthread -o main
$ ./main
main thread: pid 7398 tid 3084450496 (0xb7d8fac0)
new thread: pid 7398 tid 3084446608 (0xb7d8eb90)