当前位置:  技术问答>linux和unix

phtread_create参数传递问题

    来源: 互联网  发布时间:2017-05-20

    本文导语:  各位朋友好,            本人最近学习linux多线程编程,发现按照如下方式创建线程,在给线程函数传参数时, 获得到的参数并非我期望的值。 我创建100个线程,第一个线程传递参数0,第二个线程传递1,一次类推,...


各位朋友好,

           本人最近学习linux多线程编程,发现按照如下方式创建线程,在给线程函数传参数时, 获得到的参数并非我期望的值。

我创建100个线程,第一个线程传递参数0,第二个线程传递1,一次类推,第100个传递99,程序逻辑没发现什么问题,但是实际执行结果却并非如此。

目前知道2种方式可以达到期望结果;
1, 每个thread参数 对应一个变量,具体是用一个数组, 数组中一个元素对应一个参数。
2, 加上sleep函数

以上2种本人觉得都有缺点, 不满意,希望有经验的朋友指导,多谢!
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#include 

#include 

 

#define THREADSIZE 100

 

pthread_t thread[THREADSIZE];

pthread_mutex_t mutex;

 

void * start_fun ( void * arg)

{             

               

                int iarg = *(int*)arg;

                pthread_t self = pthread_self();

                printf("thread %u, with arg %d.n",self,iarg);

}

int main(int argc, char * argv[])

{

 

                int i =0;

                for (i; i

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,