本文主要是介绍linux 线程创建函数pthread_create的几个传参方式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
最近在linux中用到了多线程的一些知识,网上找了一些有关pthread_create函数应用的例子,感觉收获不少,在这里贴出来以供方便学习之。
. [文件] test1.c ~ 719B
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | #include <pthread.h> #include <unistd.h> #include <stdio.h> #include <stdlib.h> #include <string.h> void *start_routine( void *arg); int main( int argc, char **argv) { pthread_t tid; int code; int i; for (i = 0; i < 5; i++) { code = pthread_create(&tid, NULL, start_routine, ( void *) i); if (code != 0) { fprintf (stderr, "Create new thread failed: %s\n" , strerror (code)); exit (1); } fprintf (stdout, "New thread created.\n" ); } pthread_exit(( void *) 0); } void *start_routine( void *arg) { int id = ( int ) arg; fprintf (stdout, "%s:%d:%s() running ...\n" , __FILE__, __LINE__, __func__); fprintf (stdout, "id = %d\n" , id); return (( void *) 0); } // vim:tabstop=8 |
2. [文件] test2.c ~ 793B
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | #include <pthread.h> #include <unistd.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #define THREADS_NUM 5 void *start_routine( void *arg); int main( int argc, char **argv) { pthread_t tid; int id[THREADS_NUM]; int code; int i; for (i = 0; i < THREADS_NUM; i++) { id[i] = i; code = pthread_create(&tid, NULL, start_routine, &id[i]); if (code != 0) { fprintf (stderr, "Create new thread failed: %s\n" , strerror (code)); exit (1); } fprintf (stdout, "New thread created.\n" ); } pthread_exit(( void *) 0); } void *start_routine( void *arg) { int id = *( int *) arg; fprintf (stdout, "%s:%d:%s() running ...\n" , __FILE__, __LINE__, __func__); fprintf (stdout, "id = %d\n" , id); return (( void *) 0); } // vim:tabstop=8 |
3. [文件] test3.c ~ 714B
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | #include <pthread.h> #include <unistd.h> #include <stdio.h> #include <stdlib.h> #include <string.h> void *start_routine( void *arg); int main( int argc, char **argv) { pthread_t tid; int code; int i; for (i = 0; i < 5; i++) { code = pthread_create(&tid, NULL, start_routine, &i); if (code != 0) { fprintf (stderr, "Create new thread failed: %s\n" , strerror (code)); exit (1); } fprintf (stdout, "New thread created.\n" ); } pthread_exit(( void *) 0); } void *start_routine( void *arg) { int id = *( int *) arg; fprintf (stdout, "%s:%d:%s() running ...\n" , __FILE__, __LINE__, __func__); fprintf (stdout, "id = %d\n" , id); return (( void *) 0); } // vim:tabstop=8 |
这篇关于linux 线程创建函数pthread_create的几个传参方式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!