Ошибка сегментации в функции, которая читает файл и с потоками - PullRequest
0 голосов
/ 03 мая 2020

У меня проблема с написанием функции, которая будет передана pthread_create. Функция принимает два аргумента. Я получаю ошибку сегментации при вызове.

И pthread_create:

pthread_create(&tid_array[i], NULL, searchForWord(argv[i + 2], word), &wData[i]);

Может ли функция, переданная в pthread_create, принимать другие аргументы, кроме void *?

1 Ответ

2 голосов
/ 03 мая 2020

pthread_create выполняет процедуру запуска в виде указателя на функцию.

Выражение searchForWord(argv[i + 2], word) не является указателем на функцию; он вызывает searchForWord в текущем потоке, который всегда возвращает NULL, а затем передает NULL в pthread_create.

Функция запуска потока должна принимать параметр указателя на пустоту, но вы можете создать структуру, передать указатель на эту структуру в функцию. Вы получите указатель на пустоту, который вы можете привести к указателю на вашу структуру.

...