Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

431
Visualizações
¿Qué sucede con las claves generadas por pthread_key_create() después de una bifurcación de proceso?

De la página de manual de pthread_key_create FreeBSD: /comentario

... La función pthread_key_create() crea una clave de datos específica del subproceso visible para todos los subprocesos en el proceso. Los valores clave proporcionados por pthread_key_create() son objetos opacos que se utilizan para ubicar datos específicos del subproceso. Aunque diferentes subprocesos pueden usar el mismo valor de clave, los valores vinculados a la clave por pthread_setspecific() se mantienen por subproceso y persisten durante la vida del subproceso que llama.

Supongo que las instancias de pthread_key_t producidas están vinculadas a un proceso (de ahí la palabra opaca en la página del manual), y que se vuelven inválidas después de un fork() . Sin embargo, no pude encontrar ninguna referencia en las páginas de manual existentes o en la documentación.

¿Alguien puede confirmar/comentar?

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Supongo que las instancias pthread_key_t producidas están vinculadas a un proceso

Hay muchas razones para pensar que las instancias son específicas del proceso, en el sentido de que si, por ejemplo, registra la representación de una clave en la memoria compartida, entonces no tiene sentido para los procesos no relacionados que asignan el mismo segmento de memoria compartida.

(de ahí la palabra opaca en la página del manual),

Pero "opaco" no tiene nada que ver en particular con eso. Simplemente significa que no hay piezas reparables por el usuario en el interior. Estás destinado a usarlo solo como un todo.

y que estos se vuelven inválidos después de un fork().

Eso parece un poco de un salto. No esperaría eso en absoluto. fork() crea un duplicado casi exacto del proceso de llamada, sujeto a algunas excepciones enumeradas explícitamente, que se enumeran en el manual . Probablemente el más relevante es que el nuevo proceso contiene solo un hilo (el que llamó fork() ). La invalidación de las claves de datos específicos del subproceso no está en la lista, ni tampoco la pérdida de datos específicos del subproceso del subproceso inicial del hijo.

Sin embargo, no pude encontrar ninguna referencia en las páginas de manual existentes o en la documentación.

Exacto así.

SIN EMBARGO , los programas de subprocesos múltiples generalmente no deben bifurcarse, ya que existe un alto riesgo de que el proceso secundario quede en un estado no válido, como con mutexes que están bloqueados por subprocesos que no existen en el proceso secundario. Hay algunos casos especiales, como bifurcar a un niño que exec inmediatamente s, pero en la mayoría de los casos, no debe intentar mezclar subprocesos múltiples con multiprocesamiento.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda