De forma predeterminada, Windows bloquea el montón cuando utiliza las funciones del montón Win API.
Puede controlar el bloqueo al menos en el momento de la creación del montón. Diferentes compiladores y tiempos de ejecución hacen cosas diferentes con la familia malloc/free. Por ejemplo, la API de SmartHeap en un punto creó un montón por hilo y, por lo tanto, no necesitó bloqueo. También había opciones de configuración para activar y desactivar ese comportamiento.
En un momento a principios/mediados de los 90, los compiladores Borland Windows y OS/2 desactivaron explícitamente el bloqueo de Heap (una falla de optimización prematura) hasta que se lanzaron varios subprocesos con beginthread. Muchas muchas personas trataron de generar roscas con una llamada a la API del sistema operativo y luego se sorprendieron cuando la pila se corrompió al infierno ...
¿Tiene miedo de que a dos hilos se les asigne la misma memoria? Si es así, no debes preocuparte. Si malloc no era seguro para subprocesos, no sería el primero en descubrirlo. Si tu pregunta es -how- does malloc lograr seguridad hilo, eso depende de la implementación. – EnabrenTane
Mi pregunta se relacionó más con el rendimiento al asignar hilos paralelos. –