#include "stdio.h"
#include "stdlib.h"
#include <sys/types.h>
#include <unistd.h>
#include "pthread.h"
void *thread_body(void *arg) {
printf("thread: pid = %d, thread_id = %lu\n", getpid(), pthread_self());
return NULL;
}
int main () {
pthread_t thread_id;
printf("main: pid = %d, thread_id = %lu\n", getpid(), pthread_self());
int res = pthread_create(&thread_id, NULL, thread_body, NULL);
if (res != 0) {
perror("pthread_create error");
}
pthread_exit(NULL); // 退出main线程
}
线程间 共享 全局变量
#include "stdio.h"
#include "stdlib.h"
#include <sys/types.h>
#include <unistd.h>
#include "pthread.h"
int var = 100;
void *thread_body(void *arg) {
printf("thread: pid = %d, thread_id = %lu\n", getpid(), pthread_self());
var = 999;
return NULL;
}
int main () {
printf("main: var = %d\n", var);
pthread_t thread_id;
printf("main: pid = %d, thread_id = %lu\n", getpid(), pthread_self());
pthread_create(&thread_id, NULL, thread_body, NULL);
sleep(1);
printf("main: var = %d\n", var);
return 0;
}
获取 线程的返回值
//
// Created by beokwithanything on 2020/11/17.
//
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include <sys/types.h>
#include <unistd.h>
#include "pthread.h"
struct thread {
int var;
char str[256];
};
void *thread_body(void *arg) {
struct thread *t;
t = malloc(sizeof(t));
t->var = 200;
strcpy(t->str, "hello thread!");
return (void *)t;
}
int main () {
pthread_t thread_id;
int res = pthread_create(&thread_id, NULL, thread_body, NULL);
if (res != 0) {
perror("pthread_create error");
}
struct thread *tt;
pthread_join(thread_id, (void **) &tt);
printf("tt->var = %d, tt->str = '%s'\n", tt->var, tt->str);
pthread_exit(NULL);
}