Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

336
Vistas
¿Cuál es el "actor actual" en el modelo Swift Concurrency?

Leyendo la sección de Concurrencia de la Guía Swift, me encontré con:

Para crear una tarea no estructurada que se ejecute en el actor actual, llame al Task.init(priority:operation:) . Para crear una tarea no estructurada que no forme parte del actor actual, conocida más específicamente como tarea separada, llame al método de clase Task.detached(priority:operation:) .

Está la frase "actor actual". Esto también se menciona en la documentación de Task.init :

Ejecuta la operación de no lanzamiento dada de forma asincrónica como parte de una nueva tarea de nivel superior en nombre del actor actual.

Antes, creía haber entendido lo que significaba "actor actual":

  • si el código se ejecuta en la cola principal, entonces el actor actual puede considerarse MainActor , ya que su ejecutor es la cola principal.
  • si el código está marcado con un atributo de actor global, entonces su actor actual es ese actor global
  • si el código está en un actor y no está nonisolated , entonces su actor actual es ese actor.
 @SomeOtherActor func somethingElse() { DispatchQueue.main.async { // current actor is MainActor } } @MainActor class Foo: NSObject { func foo() { /* current actor is MainActor */ } } actor Bar { func foo() { /* current actor is Bar */ } }

Sin embargo, recientemente me di cuenta de que olvidé considerar una situación: ¿qué sucede en una cola global (o cualquier otra cola aleatoria)?

 @SomeOtherActor func somethingElse() { DispatchQueue.global().async { // current actor is? } }

Cuando intenté acceder a una de las propiedades aisladas del actor de SomeOtherActor en el cierre, recibí el mensaje:

La propiedad 'x' aislada del actor global 'SomeOtherActor' no se puede mutar desde un contexto no aislado

¿Es esa la forma en que Swift dice que no hay un actor actual? Si es así, ¿qué hará Task.init ? La documentación realmente no dice.

Idealmente, ¿hay alguna forma de imprimir programáticamente al actor actual?

Pensé que las propuestas de SE explicarían qué significa "actor actual". Ninguna de las propuestas de SE menciona la palabra "actor actual": SE-0306 , SE-0313 , SE-0316 , SE-0327 , SE-0344 .

over 4 years ago · Santiago Trujillo
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda