相关疑难解决方法(0)

pthread启动函数中的return()与pthread_exit()

以下程序显示我们可以使用return()或pthread_exit()返回可用于pthread_join()的状态变量的void*变量.

(1)是否应优先使用一个而不是另一个?

(2)为什么使用return()有效?通常我们会想到返回将值放在堆栈上但是由于线程已经完成,堆栈应该消失.或者堆栈是否在pthread_join()之后才被销毁?

(3)在你的工作中,你是否看到很多地方变量的使用?我看到90%的代码看起来只是NULL状态参数.因为通过void*ptr改变的任何东西已经反映在调用线程中,所以返回它似乎没什么意义.返回的任何新的void*ptr都必须指向由开始线程进行malloc化的东西,这使得接收线程有责任处理它.我认为状态变量是无意义的,我错了吗?

#include <iostream>
#include <pthread.h>

using namespace std;

struct taskdata
{
       int  x;
     float  y;
    string  z;
};


void* task1(void *data)
{
    taskdata *t = (taskdata *) data;

    t->x += 25;
    t->y -= 4.5;
    t->z = "Goodbye";

    return(data);
}

void* task2(void *data)
{
    taskdata *t = (taskdata *) data;

    t->x -= 25;
    t->y += 4.5;
    t->z = "World";

    pthread_exit(data);
}


int main(int argc, char *argv[])
{
    pthread_t threadID;

    taskdata t = {10, 10.0, "Hello"};

    void *status;

    cout …
Run Code Online (Sandbox Code Playgroud)

c++ unix linux pthreads

23
推荐指数
2
解决办法
2万
查看次数

标签 统计

c++ ×1

linux ×1

pthreads ×1

unix ×1