pthread_create()
принимает ссылку на pthread_id
в качестве первого аргумента.
Поэтому (в качестве быстрого и грязного исправления) я бы предложил вам изменить struct thread_info
на:
struct thread_info
{
pthread_t thread_id;
int id;
int thread_num;
int gpu;
};
Или (намного приятнее) позвонить pthread_create()
следующим образом:
if (pthread_create(&thr->thread_id, NULL, GPUMon, thr))
{
return 0;
}
Результаты, которые ваше решение выводит на печать, - это значения для pthread_id
, присвоенные pthread_create()
(или, по крайней мере, его части)в зависимости от вашей платформы), которые были случайно записаны в элемент id
из struct thread_info
, когда вы передали указатель на неправильную структуру.
И еще раз повторим: по крайней мере, при разработке doвключите все предупреждения компилятора на , поскольку (также в этом случае они будут иметь) они могут указать вам на вашу ошибку (ы) (gcc
option -Wall
)