Mi è stato recentemente reso noto che l'archiviazione locale dei thread è limitata su alcune piattaforme. Ad esempio, i documenti per la libreria C++ boost :: thread read:Su quali piattaforme è limitata la memoria locale del thread e quanto è disponibile?
"Nota: esiste un limite specifico di implementazione per il numero di oggetti di archiviazione specifici del thread che è possibile creare e questo limite può essere piccolo."
Ho cercato di scoprire i limiti per piattaforme diverse, ma non sono riuscito a trovare una tabella autorevole. Questa è una domanda importante se stai scrivendo un'app crossplatform che utilizza TLS. Linux è stata l'unica piattaforma per la quale ho trovato informazioni, sotto forma di una patch Ingo Monar inviata nel 2002 all'elenco dei kernel con l'aggiunta del supporto TLS, dove ha menzionato: "Il numero di aree TLS è illimitato, e non c'è nessun sovraccarico di allocazione associato al supporto TLS. " Che se fosse ancora vero nel 2009 (vero?) È piuttosto carino.
Ma per quanto riguarda Linux oggi? OS X? Finestre? Solaris? Sistemi operativi integrati? Per i sistemi operativi che funzionano su più architetture varia tra architetture?
Edit: Se siete curiosi perché ci potrebbe essere un limite, si consideri che lo spazio per la memorizzazione locale filo verrà preallocato, quindi dovrete pagare un costo per esso su ogni singolo filo. Anche una piccola quantità di fronte a molte discussioni può essere un problema.
Che non pulisce dopo la morte di un filo ... – bdonlan
Si è corretto, la pulizia corrente dovrebbe essere eseguita manualmente – iain