将多个参数传递给 pthread

问题描述 投票:0回答:1

对于 pthreads 库,使用结构或位字段将参数传递给线程会更好吗?将参数传递给函数时,我想在我的程序中使用更少的内存。

#include <pthread.h>
#include <stdio.h>
#include <stdint.h>
#include <stdbool.h>
#define FLYABLE 0x1
#define FOODABLE 0x2
#define ALL_OPTIONS 0xFF
/*struct my_ThreadStruct
{
    bool flyable;
    bool foodable;
};*/
void *my_ThreadFunction(void *args)
{
    if (*(uint8_t *)args & FOODABLE)
        printf("Im being eaten!\n");
    if (*(uint8_t *)args & FLYABLE)
        printf("Wee!");
    pthread_exit(NULL);
}
pthread_t child;
int main(int argc, char *argv[])
{
    uint8_t arguments = ALL_OPTIONS;
    pthread_create(&child, NULL, &my_ThreadFunction, &arguments);
    pthread_join(child, NULL);
    return 0;
}
c pthreads
1个回答
2
投票

我想在向函数传递参数时在我的程序中使用更少的内存。

传递参数时节省 4 个字节应该是您问题中最少的

您的目标应该是尽可能编写最清晰、可测试、可维护和可调试的代码。

您将通过位打包节省的 4 个字节与线程创建的开销相比相形见绌(通常以 100 KiB 或更多来衡量)。

© www.soinside.com 2019 - 2024. All rights reserved.