gpt4 book ai didi

c 将多个参数传递给线程

转载 作者:太空宇宙 更新时间:2023-11-04 06:38:57 25 4
gpt4 key购买 nike

当我创建一个线程时,我想传递几个参数。所以我在头文件中定义了以下内容:

struct data{
char *palabra;
char *directorio;
FILE *fd;
DIR *diro;
struct dirent *strdir;

};

在 .c 文件中,我执行以下操作

if (pthread_create ( &thread_id[i], NULL, &hilos_hijos, ??? ) != 0){
perror("Error al crear el hilo. \n");
exit(EXIT_FAILURE);
}

我如何将所有这些参数传递给线程。我想:

1)先用malloc为这个结构体分配内存,然后给每个参数赋值:

 struct data *info
info = malloc(sizeof(struct data));
info->palabra = ...;

2) 定义

 struct data info 
info.palabra = ... ;
info.directorio = ...;

然后,我如何在线程中访问这些参数 void thread_function (void *arguments){ ???

提前致谢

最佳答案

这是一个有效的(相对较小的)示例:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <pthread.h>

/*
* To compile:
* cc thread.c -o thread-test -lpthread
*/

struct info {
char first_name[64];
char last_name[64];
};

void *thread_worker(void *data)
{
int i;
struct info *info = data;

for (i = 0; i < 100; i++) {
printf("Hello, %s %s!\n", info->first_name, info->last_name);
}
}

int main(int argc, char **argv)
{
pthread_t thread_id;
struct info *info = malloc(sizeof(struct info));

strcpy(info->first_name, "Sean");
strcpy(info->last_name, "Bright");

if (pthread_create(&thread_id, NULL, thread_worker, info)) {
fprintf(stderr, "No threads for you.\n");
return 1;
}

pthread_join(thread_id, NULL);

return 0;
}

关于c 将多个参数传递给线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11162613/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com