Sto provando a compilare del codice C11 usando thread.h
, ma non posso. Ho ricompilato GCC (in esecuzione 4.6.2 ora), e sto cercando di compilare con gcc -std=c1x file.c -o file
. Posso farlo in g ++ (usando la libreria thread
), ma non posso farlo in C. thread.h
non è ancora incluso nella distribuzione GCC?C11 <thread.h> in GCC?
risposta
L'intestazione standard C11 per la filettatura è <threads.h>
, non <thread.h>
. Vedere la sezione 7.26 di N1570 draft.
La maggior parte della libreria standard C, incluso stdio, ad esempio, non è inclusa nella distribuzione gcc. Invece, gcc dipende da qualsiasi libreria di runtime fornita dal sistema operativo. Ciò include generalmente entrambe le intestazioni (come <threads.h>
) e il codice effettivo che implementa la libreria.
Per la maggior parte dei sistemi Linux (o GNU/Linux, se si preferisce), la libreria è glibc di GNU; per altri sistemi sarà qualcos'altro.
Quindi la vera domanda è probabilmente quando glibc, o qualunque libreria C stai usando, supporterà le funzionalità di threading di C11.
(Si noti che alcune parti della libreria, quelle più strettamente legate al compilatore, sono fornito da gcc stesso. La libreria di threading probabilmente non è uno di loro, ma certamente è necessario un po 'di supporto del compilatore .)
Per citare dal GCC standards page su C11:
GCC ha limitato il supporto incompleto per le parti di questo standard
Mentre ho solo GCC 4.6.1, non ho un " thread.h "file di intestazione ovunque sul mio sistema.
Né le pagine delle modifiche per 4.6 né 4.7 menzionano i thread.
Ci sono "fili" di cui 4.7 cambiamenti, ma nulla che sembra non avere nulla a che fare con esso in un contesto C11. Inoltre, nulla sulla C11 è menzionato nella pagina di upmaing 4.8.
Questo non è del tutto vero: 4.7 fa parlare di discussioni. Non sono sicuro che lo abbia fatto quando hai postato, ma sicuramente lo fa ora. –
Ulteriori informazioni a riguardo sono disponibili here.
... (Atomics - stdatomic.h -. Sono opzionali, e probabilmente necessario attendere caratteristiche linguaggio associati da attuare nel GCC 4.8 Direi che le interfacce opzionali filettatura a discussioni .he limiti controllo interfacce di cui all'allegato K non sono ricercato per glibc, per ora, anche se potevano potenzialmente andare in librerie separate.
la mia ipotesi è che non vedremo questo implementato per un bel po ' tempo, almeno non in glibc e gcc standard (il post originario fornisce alcune informazioni) l'ipotesi personale è qualcosa come un anno, ci vorranno probabilmente qualcosa come 2 anni fino a quando non sarà abbastanza stabile per l'uso di produzione.Quello è 2k14 (assert (survival_2012)): P
27 agosto 2014 (2 anni e 7 mesi dopo): non ci sono ancora programmi per lo sviluppo di 'threads.h' in GLIBC. – Peque
Sì, sembra che mi sia sfortunatamente sfortunato (quindi i thread nativi di Windows/i thread posix devono fare per il prossimo futuro). Per qualche motivo nessuno sta spingendo per il supporto di thread portatili:/ – AoeAoe
Vorrei che avessi avuto ragione riguardo alla tua previsione ... – Peque
MUSL libc ha C11 http://www.musl-libc.org/ glibc non threads.h supporto ancora
La maggior parte dei sistemi Linux usa glibc, alcuni (come il moderno Debian e le sue derivate) usano EGLIBC. Alcuni altri sistemi usano altri supplenti. –