线程基本操作 (3)线程的创建
创建线程的函数原型:
(线程就好比一个人,创建一个线程,就相当于给一个新生儿上户口.需要填写一些必要的信息)
上面有 tid ,就是线程的id号.linux中文件,账户,组 和线程,都是用 id 编号进行区分的.
(这个是系统分配的,不用指定,系统能分配就不自己指定,因为自己指定会可能重复和冲突)
里面用到了函数指针,指向一个函数.线程创建完之后,就会进入这个函数中,这个函数是线程运行的第一个函数,相当于线程的"主函数".
linux中返回通常可能有两种:(因为历史原因.linux中的函数返回值通常有两种形式)
第一种: 返回-1,返回errno,这种方式并不好,因为是全局变量,可能还没有来及用,就被冲刷掉了.用perror()
第二种: 返回 error number 这种是好的.是宏...用strerror (如果自己编程,推荐仿照这种)
线程的函数,都是第二种方式返回错误的,所以判断线程相关的,都需要用strerror()进行报错.
用strerror()报错,需要包含头文件 #include <string.h> .因为strerror报错会返回字符串的提示.

线程的调度,取决于调度器策略,
可能看不见那个线程输出...
因为还没有来得及调度.
双核真机可能会看到.
或者给程序加一个sleep,就可以看到.
因为返回值是void * 所以返回是NULL.
父子进程也不知道谁会先调度...