Sobes.tech
Middle

Când un nucleu fizic execută două fire, acest lucru se va întâmpla sincron sau paralel?

sobes.tech AI

Răspuns de la AI

Acest lucru se va întâmpla sincronic din punct de vedere al execuției simultane într-un același micro-moment. O resursă fizică (nucleu) nu poate executa două sarcini complet în paralel.

Sistemul de operare Android utilizează multitasking preemptiv. Nucleul comută între fire, alocând fiecăruia mici intervale de timp. Acest lucru creează iluzia de paralelism (concurență).

// Exemplu: multitasking preemptiv
fun main() {
    val thread1 = Thread {
        for (i in 1..5) {
            println("Fir 1: $i")
            Thread.sleep(10) // Simulare de lucru
        }
    }

    val thread2 = Thread {
        for (i in 1..5) {
            println("Fir 2: $i")
            Thread.sleep(10) // Simulare de lucru
        }
    }

    thread1.start()
    thread2.start()
}

În exemplul de mai sus, vedem că ieșirea liniilor din ambele fire se alternează, demonstrând schimbarea de context între ele.

Concepte:

  • Paralelism: Executarea simultană a mai multor sarcini în același moment pe mai multe CPU-uri sau nuclee fizice.
  • Sincron / Concurență: Executarea mai multor sarcini pe o anumită perioadă de timp, când procesorul schimbă rapid între sarcini, creând iluzia execuției lor simultane.

Astfel, pe un singur nucleu, are loc o execuție sincronă (concurentă) a mai multor fire prin schimbarea de context.