вызов обратного вызова от потока с помощью указателей функции

Самое простое решение: отказаться от своего кода и просто позвонить https://developer.apple.com/documentation/coregraphics/cgfloat/2994408-random .

5
задан Michael Burr 25 February 2009 в 19:18
поделиться

1 ответ

Строка в start_stopwatch():

rc =  pthread_create(&thread_id, NULL, g_start_timer, (void *) &g_data_struct);

должен быть:

rc =  pthread_create(&thread_id, NULL, g_start_timer, (void *) g_data_struct);

В первом случае Вы передаете "указатель на указатель", когда Вы действительно просто хотите передать указатель как аргумент потока.

До, когда освободить данные, существует много опций. Если Вы будете всегда передавать данные потока в выделенном блоке "кучи", то g_start_timer() поток proc может освободить его, когда это закончило вытаскивать данные. Обратите внимание, что, если Вы делаете это, затем часть протокола для запуска потока - то, что блок аргумента потока должен быть выделенной "кучей".

8
ответ дан 14 December 2019 в 04:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: