线程

线程

轻量级的进程,最小的执行单元。
进程:独立的PCB块,内存空间地址独立
线程:独立的PCB块,没有独立的内存空间地址
寄存器和栈的集合。

函数

pthread_t pthread_self(void);//返回线程ID
类似于进程中的getpid()

创建线程函数
int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
void (start_routine) (void *), void *arg);
说明:
pthread_t *thread 线程的ID
const pthread_attr_t *attr线程的属性 通常设置为NULL
void (start_routine) (void *) 线程的回调函数
void *arg回调函数的参数

线程共享全局变量。

#include 
#include 
#include 
void exit(int);
void sys_err(const char *str){
    perror(str);
    exit(1);
}

int globl_a = 100;
 
void*  func(void *a){
    //int temp = *((int*)a);
    int temp = (int)a;
    globl_a=200;
    printf("*******a=%d******\n",globl_a);
    //pthread_t pid_ret = pthread_self();
    //printf("pthreadID = %u:getpid =%d\n",pid_ret,getpid());
    printf("*******subthread********\n");
}

int main(){
    pthread_t pid_ret;
    int i=0;
    //for(;i<5;i++){
    int ret = pthread_create(&pid_ret, NULL,func, (void*)i);
    if(-1 == ret){
        sys_err("pthread_create err");
    }
    //printf("pthreadID = %u:getpid =%d\n",pid_ret,getpid());
    //}
    sleep(2);
    printf("a=%d\n",globl_a);
    return 0;

}

你可能感兴趣的:(线程)