2012-04-30 7 views
7

Como escribí en el título, me gustaría saber si los hilos stantard de C++ se gestionan en el espacio de usuario o kernel.std :: threads se gestionan en el espacio de usuario o kernel?

Gracias.

+1

¿Sobre qué plataforma? En lo que respecta al estándar, ambas opciones son igualmente válidas. – Fanael

+2

El estándar no especifica, pero dado el grado en que los hilos del kernel han llegado a dominar, creo que es seguro adivinar que la mayoría de las implementaciones probablemente usarán hilos de kernel. –

+1

No existe el "kernel" en C++. Su pregunta no se aplica a C++ como un idioma. –

Respuesta

13

Como sucede casi siempre, la norma no exige ninguna implementación en particular, solo requiere que el comportamiento exhibido cumpla con sus reglas.

Por lo tanto, la implementación particular es libre de elegir; por otro lado, probablemente muchas implementaciones se basarán en boost.thread (en el que se basa la propuesta std::thread), por lo que podemos verlo para tener una idea.

Esta biblioteca utiliza pthreads en POSIX y subprocesos de Windows en Win32. Los subprocesos Win32 son definitivamente subprocesos de kernel, pero pthreads son otra interfaz , que podrían implementarse tanto en el espacio de usuario como en el kernel (aunque casi cualquier kernel reciente de UNIX proporciona las herramientas para implementarlos en el kernel). .

Por lo tanto: std::thread puede ser cualquier cosa, aunque, en los sistemas operativos/implementaciones de PC "convencionales", es muy probable que obtenga hilos del kernel. Si por alguna razón necesita saber más, consulte la documentación de su compilador.

+0

IIRC, la implementación de subprocesos de Dinkumware es una implementación de sala limpia, no derivada de Boost, y también usa kernel threading. – MSalters

4

La interfaz es designed around pthreads, pero corresponde al implementador de libC++ decidir qué usar.

+0

@Jerry: Editado. –

+0

+1 - se ve mucho más preciso, al menos para mí. –

Cuestiones relacionadas