C++多线程编程(1)

1、基本实例

#include <iostream>
#include <pthread.h>
#include <unistd.h>
using namespace std;

#define NUM_THREADS 5

void printtids(const char *s)
{
    pid_t pid;
    pthread_t tid;
    pid=getpid();
    tid=pthread_self();
    cout<<s<<" pid: "<<pid<<" , tid: "<<tid<<endl;
}

void * say_hello(void * args)
{
    printtids("new thread:");
    cout<<"hello ..."<<endl;
}

int main()
{
    pthread_t tids[NUM_THREADS];
    for (int i=0;i<NUM_THREADS;++i)
    {
        int ret=pthread_create(&tids[i],NULL,say_hello,NULL);

        if(ret!=0)
            cout<<"pthread_create error:error_code="<<ret<<endl;
    }
    pthread_exit(NULL);
}

部分函数功能说明:

  (1)getpid()      取得进程识别码,获得目前的进程ID,需要#include <unistd.h>;

  (2)pthread_self()    获得当前线程的ID,需要#include <pthread.h>;

  (3)pthread_create     是类Unix操作系统(Unix、Linux、Mac OS X等)的创建线程的函数

      参数:

          第一个参数是指向线程ID的指针;

          第二个参数用来设置线程属性;

          第三个参数是线程运行的起始地址(函数名对应的就是一个地址);

          第四个参数是运行函数的参数。

编译:

  g++ mthread.cpp -o mthread -lpthread

由于是多线程编程,需要调用处理多线程操作相关的静态链接库文件pthread。

多次运行的结果:

 C++多线程编程(1)_第1张图片

可以看到:

  (1)我们是在一个进程内创建了多个线程;

  (2)程序多次运行的结果是不一样的,而一个程序的每次运行结果不一样,这样的程序是没有意义的。

 

你可能感兴趣的:(C++)