C Languagemultithreading

introduzione

In C11 c'è una libreria di thread standard, <threads.h> , ma nessun compilatore conosciuto che lo implementa. Pertanto, per utilizzare il multithreading in C è necessario utilizzare implementazioni specifiche della piattaforma come la libreria di thread POSIX (spesso denominata pthreads) utilizzando l'intestazione pthread.h .

Sintassi

  • thrd_t // Tipo di oggetto completo definito dall'implementazione che identifica una discussione
  • int thrd_create (thrd_t * thr, thrd_start_t func, void * arg); // Crea una discussione
  • int thrd_equal (thrd_t thr0, thrd_t thr1); // Controlla se gli argomenti si riferiscono allo stesso thread
  • thr_t thrd_current (void); // Restituisce l'identificatore del thread che lo chiama
  • int th_sleep (const struct timespec * duration, struct timespec * restante); // Sospende l'esecuzione del thread di chiamata per almeno un determinato periodo
  • void thrd_yield (void); // Permette ad altri thread di essere eseguiti al posto del thread che lo chiama
  • _Noreturn void thrd_exit (int res); // Termina il thread il thread che lo chiama
  • int thrd_detatch (thrd_t thr; // Stacca un dato thread dall'ambiente corrente
  • int thrd_join (thrd_t thr, int * res); // Blocca il thread corrente fino al termine del thread specificato

Osservazioni

L'utilizzo dei thread può introdurre comportamenti non definiti extra come http://www.Scriptutorial.com/c/example/2622/data-race . Per l'accesso senza mtx_lock() alle variabili condivise tra diversi thread C11 fornisce la funzionalità mutex mtx_lock() o i tipi di dati (opzionali) http://www.riptutorial.com/c/topic/4924/atomics e le funzioni associate in stdatomic.h .

multithreading Esempi correlati