首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >线程传递参数

线程传递参数
EN

Stack Overflow用户
提问于 2013-10-28 09:22:05
回答 1查看 1.4K关注 0票数 0
代码语言:javascript
复制
char buff[MAX_SIZE];

int main() {

    pthread_t thread[3];

    char message1 = 17;  //17 = 0x11
    char message2 = 18;
    char message3 = 19;
    char message4 = 20;

    int iret[3];
    int k;

    char message[] = {17, 18,19,20};

    /*THIS IS WORKING  

    iret[0] = pthread_create( &thread[0], NULL, write_to_buffer, (void*) &message1);
    iret[1] = pthread_create( &thread[1], NULL, write_to_buffer, (void*) &message2);
    iret[2] = pthread_create( &thread[2], NULL, write_to_buffer, (void*) &message3);
    iret[3] = pthread_create( &thread[3], NULL, write_to_buffer, (void*) &message4);
    */


    /* BUT THIS IS NOT 

    iret[0] = pthread_create( &thread[0], NULL, write_to_buffer, (void*) message);
    iret[1] = pthread_create( &thread[1], NULL, write_to_buffer, (void*) (message+1));
    iret[2] = pthread_create( &thread[2], NULL, write_to_buffer, (void*) (message+2));
    iret[3] = pthread_create( &thread[3], NULL, write_to_buffer, (void*) (message+3));

    */

    for(k=0;k<=3;k++)   {
        pthread_join( thread[k], NULL);
    }


    //rest of main

}


void *write_to_buffer( void *ptr ) {

    while(1)    {
        pthread_mutex_lock(&my_mutex);


        char *message;
        message = (char *) ptr;

        //when passing by array I'm unable to get the value in the message variable

        printf("\nMeeee = %#x  ", *(char*)ptr);



        //REST OF THE FUNCTION //logic to write to buffer

        pthread_mutex_unlock(&my_mutex);

        //SOME LOGIC I OMMITED HERE
        //to return if(indexx >= MAX_SIZE) return(NULL);        
    }   
}

我面临的问题是,当我传递数组元素时,我无法捕获线程函数中的值。但是当我传递message1、message2、message3和message4的地址时,我可以获得线程函数中传递的值

EN

回答 1

Stack Overflow用户

发布于 2013-10-28 09:28:01

您的代码中有一些未定义行为的情况。您声明了大小为3的threadiret数组,但是创建了四个线程,从而超越了这些数组的范围。这可能会影响程序的结果及其输出,因为它可能会导致您传递的数据被覆盖。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19631004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档