linux 线程创建函数pthread_create的几个传参方式

来源:互联网 发布:jquery数组长度 编辑:程序博客网 时间:2024/05/01 19:09

最近在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);
 
intmain(intargc, char**argv)
{
  pthread_t tid;
  intcode;
  inti;
 
  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)
{
  intid = (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);
 
intmain(intargc, char**argv)
{
  pthread_t tid;
  intid[THREADS_NUM];
  intcode;
  inti;
 
  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)
{
  intid = *(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);
 
intmain(intargc, char**argv)
{
  pthread_t tid;
  intcode;
  inti;
 
  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)
{
  intid = *(int*) arg;
 
  fprintf(stdout,"%s:%d:%s() running ...\n", __FILE__, __LINE__, __func__);
  fprintf(stdout,"id = %d\n", id);
 
  return((void*) 0);
}
 
// vim:tabstop=8
0 0
原创粉丝点击