Чи можуть два потоки рівня одного і того ж процесу одночасно працювати на багатоядерному процесорі?


Відповіді:


1

Зазвичай: Так.

Якщо припустити, що вони не блокуються на спільному ресурсі.
Наприклад, заблокуйте доступ до одного джойстика або спробуйте заблокувати спільний файл, ...



Спільний файл може бути більш поширеним, ніж очікувалося. Наприклад, блокування .ini-файлу або використання тимчасового файлу без використання власного випадкового імені.


що робити, якщо вони співпрацюють з потоками і обидва запитують ресурс одночасно?
JOBBINE JOSEPH

Саме для цього потрібні семафори . Лише один протектор отримає ресурс, інший заблокує, поки перший протектор не звільнить його.
Hennes

Так, у мене є, але у мене є кілька сумнівів. 1) Що трапиться, якщо ви заблокуєте потік, тобто означає, що операція вниз не вдалася, чи повинна ця сама нитка перейти в стан блокування або весь процес також перейде в стан блокування? 2) друга річ - це обряд декількох сердечників, що якщо обидва будуть робити операцію пониження одночасно на одному семафорі. (Ігноруйте це сумнів, якщо вам це здається дуже дурним).
JOBBINE JOSEPH

Кілька операцій одночасно є вагомим питанням. Це було великою проблемою в минулому, і саме тому ми розробили мутекси та семафори. Навіть з цим нам потрібно було вдатися до хитрощів у випадку, якщо два процеси намагалися затребувати ресурс точно в один і той же час. У наші дні у більшості процесорів є кілька інструкцій, які гарантовано є атомними. (Наприклад, інструкція з тестування та встановлення .) Точно, як процесор справляється з тим, що коли два основних спробують це точно в один і той же час, вам може знадобитися запитати дизайнера процесора.
Геннес

Це може бути настільки просто, як надати процесору найнижчий пріоритет основного числа, але це припущення, яке може змінюватися в залежності від центрального процесора. Щодо блокування процесів проти протекторів. Я думаю, що це безпечно читати як "блокувати нитку", а не блокувати процес. Багатопотокові процеси здаються відносно новими (не в дизайні, а в реальному використанні), і я думаю, що впевнено, що письменник просто використав "процес", а не "процес однопотокового чи конкретного протектора".
Hennes
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.