C'è un modo per utilizzare le variabili locali del filo quando si utilizzano ACE?
-
19-09-2019 - |
Domanda
Sto usando ACE discussioni e hanno bisogno di ogni thread di avere un proprio membro int. È possibile?
Soluzione
ACE chiama "Discussione bagagli specifico". Check this out: ACE_TSS . Questo è tutto quello che so su di esso, mi dispiace, non può essere più di aiuto.
La pagina di Wikipedia per archiviazione thread-local dice che c'è un modo per pthreads fare anche questo.
Altri suggerimenti
La sua piattaforma specifica. Windows per esempio si dovrebbe usare __declspec( thread )
. Il compilatore sfruttare la TLS API (TlsAlloc, TlsFree e amici), e su Win32 non dovreste sempre utilizzare FLS (Fiber archiviazione locale) al posto di TLS, ma l'API TLS è silenziosamente si reindirizza a FLS comunque su qualsiasi versione moderna Win32.
Sì. È possibile utilizzare il modello ACS_TSS<type>
, che è stato progettato per "infilare archiviazione specifico". (Vale a dire: filetto variabili locali)
Per i dettagli, vedere la href="http://www.dre.vanderbilt.edu/Doxygen/Stable/ace/a00615.html" su ACE_TSS .
TLS per alcuni target . È possibile utilizzare la parola chiave specifica __thread
-GCC per definire le variabili thread-local (deve essere statica o globale).
libACE stessa ha roba thread-local integrato, è possibile controllare la documentazione e guardare il esempio di codice
Non c'è modo di avere ACE_TSS impostare il valore iniziale per tutte le discussioni; si può facilmente impostare il valore iniziale appena dopo l'ingresso nella funzione filo però.