Если вы спрашиваете о части взаимного исключения, вы можете использовать мьютекс для достижения этой цели.Используйте pthread_mutex_init для инициализации мьютекса и pthread_mutex_destroy для его очистки.Затем используйте pthread_mutex_lock и pthread_mutex_unlock , чтобы получить и освободить мьютекс.
Редактировать Основываясь на кратком (чрезвычайно кратком) просмотре вашего другого поста, который вы упомянули в комментариях, я понимаю, что вы ищете альтернативу sleep ().Можно использовать select () .Сделайте что-то вроде этого:
struct timeval sleeptime;
// initialize sleeptime with the desired length such as
memset( &sleeptime, 0, sizeof( sleeptime ));
sleeptime.tv_sec = 5;
select( 0, NULL, NULL, NULL, &sleeptime );
Это не будет блокировать другие потоки.Однако вы должны заметить, что select
вернется (если я правильно помню), если процесс получит какие-либо сигналы, даже если время еще не истекло.