¿Enviará el sistema una notificación NSWillBecomeMultiThreadedNotification cuando cree subprocesos POSIX?

StackOverflow https://stackoverflow.com/questions/1608230

  •  05-07-2019
  •  | 
  •  

Pregunta

Lo intenté, pero creo que esta notificación no llega. ¿Es ese el caso normal?

¿Fue útil?

Solución

No, esta notificación es enviada por NSThread . Si está utilizando pthreads ordinarios, no se enviará.

Otros consejos

De los documentos :

  

Protegiendo los marcos de cacao para   Aplicaciones multiproceso, cacao.   Los marcos usan cerraduras y otras formas.   de sincronización interna para garantizar   se comportan correctamente Para prevenir   estos bloqueos de rendimiento degradante   en el caso de un solo hilo, sin embargo,   El cacao no los crea hasta que el   La aplicación genera su primera nueva   hilo usando la clase NSThread. Si   usted genera hilos usando solo POSIX   rutinas de hilo, el cacao no   recibir las notificaciones que necesita para   sabe que su aplicación es ahora   multihilo Cuando eso pasa,   Operaciones relacionadas con el cacao.   marcos pueden desestabilizar o estrellarse   su aplicación.

     

Para que Cocoa sepa que tiene la intención de   Usa múltiples hilos, todo lo que tienes que hacer.   hacer es generar un solo hilo usando el   NSThread clase y dejar que ese hilo   salir inmediatamente. Tu entrada de hilo   El punto no necesita hacer nada. Solo el   acto de generar un hilo usando   NSThread es suficiente para asegurar que la   Cerraduras necesarias por los marcos de cacao.   se ponen en su lugar.

     

Si no estás seguro de si Cocoa piensa   Su aplicación es multiproceso o   no, puedes usar el isMultiThreaded   método de NSThread para comprobar.

También se debe tener en cuenta que 'los tiempos han cambiado' desde que se agregó NSWillBecomeMultiThreadedNotification a Foundation . La programación multihilo ahora es mucho, mucho más común. Ahora es completamente posible, incluso es probable, que nunca vea esta notificación publicada en una aplicación. Las aplicaciones modernas se convierten en múltiples subprocesos muy temprano en su vida, posiblemente antes de que alguna parte de su código se ejecute. También de la documentación:

  

Si está desarrollando una biblioteca de cacao,   Puedes registrarte como observador para   la    NSWillBecomeMultiThreadedNotification   si quieres ser notificado cuando el   La aplicación se convierte en multiproceso. Tú   No debe confiar en recibir este   notificación, sin embargo, como podría ser   enviado antes de que su código de biblioteca es   alguna vez llamado.

Usaré [NSThread isMultiThreaded] en lugar de confiar en NSWillBecomeMultiThreadedNotification .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top