一. 进程与线程关系
进程: ./xxx --> 开启一个新的进程 进程是系统最小资源分配单位
int main() { --> 进程开始 …
return 0; --> 进程结束 }
线程: 一个进程内部的资源,是系统中调度的基本单位,所有子线程都是共有资源
二. 线程的函数接口 --> 封装在线程库 libpthread.so 头文件: pthread.h
库的路径: /usr/lib/i386-linux-gnu/libpthread.so
头文件的路径: /usr/include/pthread.h
三. 关于线程的函数接口
1. 创建一个新的线程 – pthread_create --> man 3 pthread_create
#include <pthread.h>
int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);
//使用了该函数,就必须在编译时链接线程库 -lpthread Compile and link with -pthread.
例子: gcc create.c -o create -lpthread
thread: 新的线程的TID号
attr: 线程的属性;普通属性: NULL
start_routine: 线程的任务函数
arg: 主线程传递子线程的参数返回值: 成功:0 ,并且线程创建了 失败:错误码,并且线程没有创建
=================================================================
#include <stdio.h>
#include <pthread.h>
//子线程的任务函数
void *fun(void *arg)
{
int i;
printf("I am child thread!\n");
for(i=10;i>0;i--)
{
sleep(1);
printf("child i = %d\n",i);
}
}
int main()
{
pthread_t tid; //用于存放子进程的TID号
int ret;
//主线程
printf("I am main thread! before create!\n");
ret = pthread_create(&tid,NULL,fun,NULL);
if(ret != 0)
{
printf("pthread_create error!\n");
}
printf("I am main thread! after create!\n");
int i;
for(i=10;i>0;i--)
{
sleep(1)