写在开始

昨天有给某人写了一个C语言的作业,内容是写两个线程,然后在一个线程里打印出另一个线程的线程号。第一个线程结束后再结束第二个线程,内容就是这样子。

代码内容

其实这个写法就是用了一下pthreads里面的几个函数就可以实现了。我第二个线程打印第一个线程的线程号的方式是在第一个线程结束之后的返回值里面添加上第一个线程的线程号,然后第二个线程join一下第一个线程,这样等待着第一个线程结束之后就可以获取到第一个线程当时获取的线程号了,整体思路就这样子。
接下来是代码

#include <stdio.h>
#include <pthread.h>
#include <stdlib.h>
#include <sys/syscall.h>
#define gettid() syscall(__NR_gettid)


void * tr1(){
    printf("this is thread 1\n");
    pthread_exit((void *)gettid());
}

void * tr2(void * thread1){
    void * thread_id;
    printf("this is thread 2\n");
    pthread_join((pthread_t)thread1,&thread_id);
    printf("%d",(int*)thread_id);
    pthread_exit(NULL);
}

int main() {
    pthread_t thread1,thread2;
    pthread_create(&thread1,NULL,tr1,NULL);
    pthread_create(&thread2,NULL,tr2,(void *)thread1);
    pthread_exit(NULL);
}

写在最后

方式也是挺简单的,但是至少达到目的了,所以这样就可以了。

Last modification:January 27th, 2020 at 01:52 pm