Wenn Sie nach dem gegenseitigen Ausschlussteil fragen, können Sie einen Mutex verwenden, um das zu erreichen. Verwenden Sie pthread_mutex_init to initialize a mutex and pthread_mutex_destroy, um es zu reinigen. Verwenden Sie dann pthread_mutex_lock and pthread_mutex_unlock, um den Mutex zu erhalten und freizugeben.
Bearbeiten Basierend auf einem kurzen (extrem kurzen) Blick auf Ihren anderen Beitrag, den Sie in den Kommentaren erwähnen, verstehe ich, dass Sie nach einer Alternative zu Schlaf() suchen. Eine Möglichkeit besteht darin, select() zu verwenden. Die tun etwas wie folgt:
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);
Das wird nicht die anderen Threads blockieren. Sie sollten jedoch beachten, dass select
zurückkommt (wenn ich mich richtig erinnere), wenn der Prozess irgendwelche Signale empfängt, selbst wenn die Zeit noch nicht abgelaufen ist.
Da C keine native Threading-Bibliothek hat, müssen Sie uns mitteilen, auf welcher Plattform Sie sich befinden. Ich schlage auch vor, dass Sie Ihre Frage erneut eingeben, um die Plattform anzugeben. Damit Sie nicht mit Antworten für Plattformen bombardiert werden, die Sie nicht interessieren. – jer
LINUX-Plattform :) – iPadDevloperJr
@jer: Die Erwähnung von 'Pthread_t' in der Frage scheint die Pthreads-Bibliothek implizieren. – caf