Linux 线程编程之二

Posted Fresh_Air_Life

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 线程编程之二相关的知识,希望对你有一定的参考价值。

多线程程序作为一种多任务、并发的工作方式,当然有以下的优点:
  1) 提高应用程序响应。这对图形界面的程序尤其有意义,当一个操作耗时很长时,整个系统都会等待这个操作,此时程序不会响应键盘、鼠标、菜单的操作,而使用多线程技术,将耗时长的操作(time consuming)置于一个新的线程,可以避免这种尴尬的情况。
  2) 使多CPU系统更加有效。操作系统会保证当线程数不大于CPU数目时,不同的线程运行于不同的CPU上。

 

  3) 改善程序结构。一个既长又复杂的进程可以考虑分为多个线程,成为几个独立或半独立的运行部分,这样的程序会利于理解和修改。

 

线程编程实例1.

 

/* example.c*/
#include <stdio.h>
#include <pthread.h>
void thread(void)

 int i;
 for(i=0;i<3;i++)
  printf("This is a pthread.n");


int main(void)

 pthread_t id;
 int i,ret;
 ret=pthread_create(&id,NULL,(void *) thread,NULL);
 if(ret!=0)
  printf ("Create pthread error!n");
  exit (1);
 
 for(i=0;i<3;i++)
  printf("This is the main process.n");
 pthread_join(id,NULL);
 return (0);

编译此程序:

 

gcc example1.c -lpthread -o example1

运行example1,我们得到如下结果:

 

This is the main process.
This is the main process.
This is the main process.
This is a pthread
This is a pthread
This is a pthread

          上面的示例中,我们使用到了两个函数,pthread_create和pthread_join,并声明了一个pthread_t型的变量。pthread_t在头文件/usr/include/bits/pthreadtypes.h中定义:         

 

           typedef unsigned long int pthread_t;

 

gcc example1.c -lpthread -o example1

 

 

 

 

 

 

以上是关于Linux 线程编程之二的主要内容,如果未能解决你的问题,请参考以下文章

linux C 线程池

python并发编程之进程池,线程池concurrent.futures

Linux系统应用编程 --- 多线程之线程回收

Linux系统应用编程 --- 多线程之线程回收

Linux 线程编程之二

(51)LINUX应用编程和网络编程之六Linux高级IO