Heim  >  Artikel  >  Backend-Entwicklung  >  Verwenden eines C-Programms zur Thread-Synchronisierung, um Zahlen nacheinander zu drucken

Verwenden eines C-Programms zur Thread-Synchronisierung, um Zahlen nacheinander zu drucken

王林
王林nach vorne
2023-08-26 22:45:061327Durchsuche

Verwenden eines C-Programms zur Thread-Synchronisierung, um Zahlen nacheinander zu drucken

Bei einem Thread muss das Programm die Threads von 0 bis 10 entsprechend ihrer Priorität drucken.

Was ist ein Thread?

Threads sind einfache Prozesse, die innerhalb eines Programms ausgeführt werden. Ein einfaches Programm kann n Threads enthalten.

Im Gegensatz zu Java unterstützt der C/C++-Sprachstandard kein Multithreading. POSIX-Threads (Pthreads) sind der Standard für Multithreading in C/C++. Die C-Sprache bietet keine integrierte Unterstützung für Multithread-Anwendungen, sondern verlässt sich bei der Bereitstellung dieser Funktionalität vollständig auf das Betriebssystem.

Wie funktioniert es in unserem Programm?

Um Thread-Funktionen nutzen zu können, verwenden wir die Header-Datei #include. Diese Header-Datei enthält alle Thread-bezogenen Funktionen in unserem Programm, wie z. B. pthread_create() usw.

Die aktuelle Aufgabe besteht darin, die vom gcc-Compiler bereitgestellte pthread-Standardbibliothek zum Synchronisieren von n Threads zu verwenden. Die Idee besteht darin, die Thread-Anzahl zu ermitteln und 1 im ersten Thread, 2 im zweiten Thread, 3 im dritten Thread und bis zum zehnten Thread zu drucken. Die Ausgabe enthält Zahlen von 1 bis 10, basierend auf der Priorität des Threads. Die chinesische Übersetzung von „Algorithmus“ lautet „

Start
Step 1 -> Declare global variables as int MAX=10 and count=1
Step 2 -> declare variable thr of pthread_mutex_t and cond of pthread_cond_t
Step 3 -> Declare Function void *even(void *arg)
   Loop While(count < MAX)
      Call pthread_mutex_lock(&thr)
      Loop While(count % 2 != 0)
         Call pthread_cond_wait(&cond, &thr)
      End
      Print count++
      Call pthread_mutex_unlock(&thr)
      Call pthread_cond_signal(&cond)
   End
   Call pthread_exit(0)
Step 4 -> Declare Function void *odd(void *arg)
   Loop While(count < MAX)
      Call pthread_mutex_lock(&thr)
      Loop While(count % 2 != 1)
         Call pthread_cond_wait(&cond, &thr)
      End
      Print count++
      Call pthread_mutex_unlock(&thr)
      Call pthread_cond_signal(&cond)
   End
   Set pthread_exit(0)
Step 5 -> In main()
   Create pthread_t thread1 and pthread_t thread2
   Call pthread_mutex_init(&thr, 0)
   Call pthread_cond_init(&cond, 0)
   Call pthread_create(&thread1, 0, &even, NULL)
   Call pthread_create(&thread2, 0, &odd, NULL)
   Call pthread_join(thread1, 0)
   Call pthread_join(thread2, 0)
   Call pthread_mutex_destroy(&thr)
   Call pthread_cond_destroy(&cond)
Stop

Das obige ist der detaillierte Inhalt vonVerwenden eines C-Programms zur Thread-Synchronisierung, um Zahlen nacheinander zu drucken. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen