详解Linux中的多线程都是如何实现的

    作者:课课家教育更新于: 2016-02-22 14:46:18

      所谓的多线程就是多个函数同时执行。一般将线程表述为一个api加一个函数。线程函数有特定的格式要求,以便系统自动调用。

      Windows进程包含多个线程,进程是分配资源(包括CPU)的最小单位,而线程是调度的最小单位。

      Linux中的进程和线程关系应该和Windows一样,而且在Linux中创建多线程程序和Windows一样简单。

      下面是一个多线程实例,程序流程是这样的:

      进程启动,创建一个线程

      线程和主进程都每个一段时间输出一些信息,二者并发执行

      下面的代码编译于ubuntu 10.0.4:

      thread.cpp源代码:

      #include // printf

      #include // pthread_create

      #include // exit

      #include // usleep

      void * thread( void * par){// 线程函数

      int i;

      for( i = 0; i < 30; i ++){

      printf( "This is a pthread.\\n");

      usleep( 1000);

      }

      return 0;

      }

      int main(void){

      pthread_t id;

      int i,ret;

      ret = pthread_create( &id, NULL, thread, NULL);// 创建一个线程

      if( ret != 0){

      printf( "Create pthread error!\\n");

      exit( 1);

      }

      for( i = 0; i < 30; i ++){// 和创建的线程并发执行

      printf( "This is the main process.\\n");

      usleep( 330);

      }

      pthread_join( id, NULL); // 等待tid为id的线程退出执行

      return( 0);

      }

      makefile内容:

      thread: thread.cpp

      g++ thread.cpp -lpthread -o thread

      程序执行截图:

    详解Linux中的多线程都是如何实现的_Linux多线程_linux系统_Linux_课课家

      笔记:

      编译时必须链入 pthread 这个库

      usleep参数是毫秒级的,sleep参数是秒级的

课课家教育

未登录

1