对于 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;
}
我想在向函数传递参数时在我的程序中使用更少的内存。
传递参数时节省 4 个字节应该是您问题中最少的。
您的目标应该是尽可能编写最清晰、可测试、可维护和可调试的代码。
您将通过位打包节省的 4 个字节与线程创建的开销相比相形见绌(通常以 100 KiB 或更多来衡量)。