c++ - 将 argv 和 argc 传递给线程

标签 c++ c pthreads parameter-passing

我的程序接收来自用户的参数

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

我在某个线程中有这个函数(我不能改变这个函数):

func(&argc, &argv);

如您所见,我需要调用线程,并在该线程内使用这些参数调用 func。 我看到有一种方法可以使用结构向线程发送多个参数。

结构应该是什么样子的?以及如何将这些参数复制到结构中?

最佳答案

struct arg_holder {
    int argc;
    char ** argv;
};

void * thread_caller(void * arg) {
    struct arg_holder arg_struct = *(struct arg_holder *)arg;
    free(arg);
    return func(arg_struct->argc, arg_struct->argv);
}

main 中:

struct arg_holder * arg_struct = malloc(sizeof(*arg_struct));
arg_struct->argc = argc;
arg_struct->argv = argv;

pthread_create(&thread_id, NULL, thread_caller, arg_struct);

关于c++ - 将 argv 和 argc 传递给线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21483180/

相关文章:

c++ - 在参数化构造函数中将数组作为参数传递

c - 多线程,id不起作用,如何添加其他功能

C编程101 : Dice game Assignment that adds an extra turn when players roll a 6

pthreads - 线程使用 emscripten

C++ - 有没有一种方法可以使用类名作为 std::map 的键?

c++ - if 与 if/else 关于 bool 值

c - 带限制指针的 GCC 别名检查

c - 未创建线程的异常错误?

CMake 无法使用 Linaro 工具链找到线程

C++ 替换 vector 中的动态对象