• C++ 多线程编程


    很多的时候我们在写代码的时候会遇到多线程 接下来我简单谢了一个多线程的程序 直接上代码

    #include <iostream>
    using namespace std;
    #include <pthread.h>
    #define NUM_THERADS 5
    void * say_hello(void * args)
    {
        cout << "Hello Runoob!" <<*((int *)args) << endl;
        return 0;
    }
    /*
    原型:int  pthread_create((pthread_t  *thread,  pthread_attr_t  *attr,  void  *(*start_routine)(void  *),  void  *arg)

    用法:#include  <pthread.h>

    功能:创建线程(实际上就是确定调用该线程函数的入口点),在线程创建以后,就开始运行相关的线程函数。

    说明:thread:线程标识符;

        attr:线程属性设置;
        
        start_routine:线程函数的起始地址;
        
        arg:传递给start_routine的参数;
        
        返回值:成功,返回0;出错,返回-1。
    */
    int main()
    {
        pthread_t tids[NUM_THERADS];
        static int j =0;
        for(int i= 0;i<NUM_THERADS; ++i)
        {
            j++;
           int ret = pthread_create(&tids[i],NULL,say_hello,(void *)&(j));
           if(ret != 0)
           {
               cout << "pthread_create error : error_code"<< ret <<  endl;
           }
        }
        pthread_exit(NULL);//终止现线程
    }

     向线程回调函数中传入 结构体

    #include <iostream>
    #include <cstdlib>
    #include <pthread.h>
    
    using namespace std;
    
    #define NUM_THREADS     5
    
    struct thread_data{
       int  thread_id;
       char *message;
    };
    
    void *PrintHello(void *threadarg)
    {
       struct thread_data *my_data;
    
       my_data = (struct thread_data *) threadarg;
    
       cout << "Thread ID : " << my_data->thread_id ;
       cout << " Message : " << my_data->message << endl;
    
       pthread_exit(NULL);
    }
    
    int main ()
    {
       pthread_t threads[NUM_THREADS];
       struct thread_data td[NUM_THREADS];
       int rc;
       int i;
    
       for( i=0; i < NUM_THREADS; i++ ){
          cout <<"main() : creating thread, " << i << endl;
          td[i].thread_id = i;
          td[i].message = (char*)"This is message";
          rc = pthread_create(&threads[i], NULL,
                              PrintHello, (void *)&td[i]);
          if (rc){
             cout << "Error:unable to create thread," << rc << endl;
             exit(-1);
          }
       }
       pthread_exit(NULL);
    }
  • 相关阅读:
    关于struts页面跳转的问题
    java中==和equals的区别
    控制广播风暴的方法
    广播风暴的成因及解决办法
    思科FEX配置
    思科vPC技术和配置
    数据中心架构TOR和EOR
    ARP表项及老化时间
    MAC地址表和老化时间
    track 3 list boolean or
  • 原文地址:https://www.cnblogs.com/wanghuixi/p/8966025.html
Copyright © 2020-2023  润新知