Когда вы создаете новый поток, он запускается независимо от основного потока.Это означает, что ничто не мешает выполнению printf
in main
до того, как CustomerFunc
выполнит какое-либо изменение.
Простой способ исправить это - основной поток ждет, пока новый поток не завершит работу, вызвавpthread_join
.
Вы также не передаете customer
на pthread_create
должным образом.&customer
имеет тип Customer **
, но ваша функция потока ожидает Customer *
, поэтому удалите оператор адреса &
.
rc = pthread_create(&abc[0],NULL,CustomerFunc, customer);
pthread_join(abc[0], NULL);
printf("reservable MAIN%d", customer->reservable);