有人可以解释下面的线程代码吗?

时间:2014-01-08 18:40:05

标签: linux pthreads

所以我是系统编程和学习线程的新手。术语posix意味着什么?我需要帮助理解以下代码。

#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>

void *print_message_function( void *ptr );

main()

{

     pthread_t thread1, thread2;

     const char *message1 = "Thread 1";

     const char *message2 = "Thread 2";

     int  iret1, iret2;

     iret1 = pthread_create( &thread1, NULL, print_message_function, (void*) message1);

     iret2 = pthread_create( &thread2, NULL, print_message_function, (void*) message2);


     pthread_join( thread1, NULL);
     pthread_join( thread2, NULL);

     printf("Thread 1 returns: %d\n",iret1);
     printf("Thread 2 returns: %d\n",iret2);
     exit(0);

}

void *print_message_function( void *ptr )
{

     char *message;
     message = (char *) ptr;
     printf("%s \n", message);

}

我不理解这一行:pthread_join(thread1,NULL); 和函数:void * print_message_function(void * ptr)。

此外,变量iret返回什么?

2 个答案:

答案 0 :(得分:1)

它产生了两个线程。

将“返回值”保存到先前声明的变量中。

加入线程,基本上等待它们停止。

打印变量

以状态0退出,正常成功退出

posix是Unix操作系统的通用标准。 E.g文件结构等

答案 1 :(得分:1)

你应该阅读posix文档。

  

我不理解这一行:pthread_join(thread1,NULL);和   function:void * print_message_function(void * ptr)。

  1. pthread_join阻塞,直到线程终止
  2. void *print_message_function( void *ptr )是一个返回void*并接收void*作为参数的函数
  3. 同样,你应该阅读posix文档(并了解更多C)。

相关问题