Sobes.tech
Middle

Когато едно физическо ядро изпълнява два потока, това ще се случи синхронно или паралелно?

sobes.tech AI

Отговор от AI

Това ще се случи синхронно по отношение на едновременната изпълнение в един и същи микромомент. Физическият ресурс (ядрото) не може да изпълнява две задачи напълно паралелно.

Операционната система Android използва предимпативен многозадачен режим. Ядрото превключва между нишки, като на всяка от тях се дава малък времеви интервал. Това създава илюзията за паралелност (конкуренция).

// Пример: предимпативен многозадачен режим
fun main() {
    val thread1 = Thread {
        for (i in 1..5) {
            println("Нишка 1: $i")
            Thread.sleep(10) // Имитиране на работа
        }
    }

    val thread2 = Thread {
        for (i in 1..5) {
            println("Нишка 2: $i")
            Thread.sleep(10) // Имитиране на работа
        }
    }

    thread1.start()
    thread2.start()
}

В горния пример виждаме, че изходът на редовете и на двете нишки се редува, което демонстрира превключването на контекста между тях.

Концепции:

  • Паралелизъм: едновременна изпълнение на няколко задачи в един и същи момент на няколко физически CPU или ядра.
  • Синхронна / Конкурентна: изпълнение на няколко задачи през определен период от време, когато процесорът бързо превключва между задачите, създавайки илюзията за тяхното едновременна изпълнение.

Така, на едно ядро, се извършва синхронно (конкурентно) изпълнение на няколко нишки чрез превключване на контекста.