уточняющий ответ сумеречного:
work
параметр - указатель на функцию. Функция должна принимать один аргумент, который указан как тип void *
и возвращаемое значение void *
.
param
, как ожидается, будет указателем на данные, которые work
получит.
В качестве примера, допустим, вы хотите передать два int работнику. Затем вы можете создать что-то вроде этого:
int *param = (int *)malloc(2 * sizeof(int));
param[0] = 123;
param[1] = 456;
pthread_create(&cThread, NULL, work, param);
Тогда ваша рабочая функция может преобразовать тип указателя и получить данные параметров:
void *work(void * parm) {
int *param = (int *)parm;
int first_val = param[0];
....
}
Вы можете делать более сложные вещи, такие как создание структуры со всеми данными, которые вам нужно передать.