冷寒生 发表于 2013-04-14 21:23

Linux下一个简单的线程示例程序

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

    void *thread_function( void *arg );
    char message[] = "Hello World!\n";

    int main()
    {
      int res;
      pthread_t a_thread;
      void *thread_result;

      /* 创建线程 */
      res = pthread_create( &a_thread, NULL, thread_function, ( void* )message );
      if ( res != 0 )
      {
            perror( "Thread creation failed" );
            exit( EXIT_FAILURE );
      }

      printf( "Waiting for thread to finish...\n" );
      /* 等待线程结束 */
      res = pthread_join( a_thread, &thread_result );

      if ( res != 0 )
      {
            perror( "Thread join failed" );
            exit( EXIT_FAILURE );
      }

      printf( "Thread joined, it returned %s\n", ( char* )thread_result );
      printf( "Message is now %s\n", message );
      exit( EXIT_SUCCESS );
    }

    void *thread_function( void *arg )
    {
      printf( "thread_function is running. Argument was %s\n", ( char* )arg );
      sleep( 3 );
      strcpy( message, "Bye!" );
      /* 线程返回值 */
      pthread_exit( (void*)"Thank you for the CPU time" );
    }主要涉及到3个函数:pthread_create, pthread_join, pthread_exit。

int
   pthread_create(pthread_t *thread, const pthread_attr_t *attr,
         void *(*start_routine)(void *), void *arg);

int
   pthread_join(pthread_t thread, void **value_ptr);

void
   pthread_exit(void *value_ptr);

dengxiayehu 发表于 2013-04-16 15:31

支持下。

线程参数用全局变量啊,,

楼主普及下线程传递参数的方式呗,整型、字符串、结构体等:mrgreen:

Tonny_ren 发表于 2013-04-16 17:27

线程传递的参数是 void型的换种意义说就是你想让它是什么型就是什么型
页: [1]
查看完整版本: Linux下一个简单的线程示例程序