线程

线程

轻量级的进程,最小的执行单元。
进程:独立的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 <pthread.h>
#include <unistd.h>
#include <stdio.h>
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;

}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 系统与网络编程 小作业 公交车停发车程序 线程 并发执行:看起来像同时运行,实际上在单核cpu里只有一个。将其排成...
    I踏雪寻梅阅读 3,283评论 0 3
  • 线程基础 线程是进程的一个执行单元,执行一段程序片段,线程共享全局变量;线程的查看可以使用命令或者文件来进行查看;...
    秋风弄影阅读 4,057评论 0 0
  • 姓名:屈彦维 学号:16020610026 转载自:http://lw.3edu.net/qrs/lw_18446...
    怀光_ee48阅读 7,792评论 0 2
  • 概述 线程和进程本质上来说都属于一个内核调度单元,也就是说都可以作为一条单独的执行路径。但是多进程程序通常有一些限...
    loopppp阅读 3,301评论 0 0
  • 转自:Youtherhttps://www.cnblogs.com/youtherhome/archive/201...
    njukay阅读 5,518评论 0 52