博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
APUE学习笔记-POSIX线程(pthread)
阅读量:5806 次
发布时间:2019-06-18

本文共 1164 字,大约阅读时间需要 3 分钟。

hot3.png

<310>

#include "myapue.h"#include 
pthread_t ntid;void printids(const char *s){ pid_t pid; pthread_t tid; pid = getpid(); tid = pthread_self(); printf("%s pid %lu tid %lu (0x%lx)\n", s, (unsigned long)pid,\ (unsigned long)tid, (unsigned long)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) err_exit(err, "can't create thread"); printids("main thread:"); sleep(1); exit(0);}

(1)GCC使用库函数

1)在Liunx中函数库的命名规则都是以“lib”开头,因此,库文件只需填写lib之后的内容即可。

2)pthread 库不是 Linux 系统默认的库,连接时需要使用静态库 libpthread.a,所以在使用pthread_create()创建线程时,需要链接该库。

3)链接时加上-lpthread

(2)<309>

int pthread_create(pthread_t *thread, const pthread_attr_t *attr

                                void *(*start_routine) (void *), void *arg);

thread:新创建线程的ID会被设置成thread指向的内存单元。

attr:用于定制各种不同的线程属性。设置为NULL,创建一个具有默认属性的线程。

start_routine:新创建的线程从start_routine函数的地址开始运行。

arg:如果需要向start_routine函数传递的参数有一个以上,需要把这些参数放到一个结构中,然后把这个结构的地址作为arg参数传入。

函数调用失败时返回错误码,而不是设置errno。

(3)<308>

pthread_t pthread_self(void);

线程调用获得自身的线程ID。

(4)

主线程需要休眠,如果主线程不休眠,它就可能会退出,这样新线程还没有机会运行,整个进程可能就已经终止了。 


转载于:https://my.oschina.net/u/2463708/blog/510663

你可能感兴趣的文章
又拍云沈志华:如何打造一款安全的App
查看>>
dubbo源码分析-架构
查看>>
Windows phone 8 学习笔记
查看>>
我的友情链接
查看>>
sshd_config设置参数笔记
查看>>
LeetCode--112--路径总和
查看>>
感悟贴2016-05-13
查看>>
百度编辑器ueditor 光标位置的坐标
查看>>
DEV-C++ 调试方法简明图文教程(转)
查看>>
参加婚礼
查看>>
Java重写equals方法和hashCode方法
查看>>
Spark API编程动手实战-07-join操作深入实战
查看>>
EasyUI基础入门之Easyloader(载入器)
查看>>
Spring ’14 Wave Update: Installing Dynamics CRM on Tablets for Windows 8.1
查看>>
MySQL 备份与恢复
查看>>
吃午饭前,按书上的代码写会儿--Hunt the Wumpus第一个版本
查看>>
TEST
查看>>
PAT A1037
查看>>
ReactiveSwift源码解析(三) Signal代码的基本实现
查看>>
(六)Oracle学习笔记—— 约束
查看>>