1 #include <pthread.h> 2 #include <unistd.h> 3 #include <stdio.h> 4 #include <stdlib.h> 5 #include <string.h> 6 pthread_t ntid; 7 /** 8 * 功能:打印进程id,打印线程id。 9 * 在编译时注意加上-lpthread参数,以调用静态链接库。因为pthread并非Linux系统的默认库 10 * gcc pthread.c -lpthread -o pthread 11 */ 12 void printids(const char *s) 13 { 14 pid_t pid; 15 pthread_t tid; 16 //获取当前进程id 17 pid = getpid(); 18 //获取当前线程id 19 tid = pthread_self();//获得线程自身的ID 20 //打印当前进程id,打印当前线程id 21 printf("%s pid %u strerrortid %u (0x%x)\n", s, 22 (unsigned int)pid, (unsigned int)tid, (unsigned int)tid); 23 } 24 25 void *th_fn(void *arg) 26 { 27 printids(arg); 28 return NULL; 29 } 30 31 int main(void) 32 { 33 34 int err = 0;
1 /* 2 pthread_create函数 3 4 线程创建函数 5 6 头文件及函数原型 7 #include<pthread.h> 8 int pthred_creat(pthread_t *restrict tidp,const pthread_attr_t *restric attr, void *(*start_rtn)(void *),void *restrict arg); 9 10 参数 11 第一个参数为指向线程标识符的指针。 12 第二个参数用来设置线程属性。 13 第三个参数是线程运行函数的起始地址。 14 最后一个参数是运行函数的参数。 15 16 */
35 err = pthread_create(&ntid, NULL, th_fn, "new thread: "); 36 if (err != 0) { 37 fprintf(stderr, "errno: %s", strerror(err)); 38 exit(1); 39 } 40 printids("main thread: "); 41 //为了不让进程比线程提前结束,延迟1秒执行 42 sleep(1); 43 return 0; 44 }
1 程序运行结果 2 main thread: pid 3755 strerrortid 3814000384 (0xe3550700) 3 new thread: pid 3755 strerrortid 3805734656 (0xe2d6e700)
时间: 2024-10-03 14:45:37