Junior
Мо чӣ гуна аст дар контексти бисёрсоҳавӣ?
sobes.tech AI
Ҷавоб аз AI
Рақобатлик — бу тизимнинг бир вақтнинг ўзида бир неча вазифани бажариш қобилиятидир, улар умумий ресурсларни бўлишиши мумкин. Кўп иш парчаларида бу, ҳар бири ўз вазифасини ишлай оладиган бир нечта иш парчаларини ишга тушириш орқали амалга оширилади.
C#да рақобатликка эришиш механизмларининг мисоллари:
Threadсинфи: Тўғридан-тўғри иш парчаларини яратиш ва бошқариш.// Янги иш парчасини яратиш Thread newThread = new Thread(() => { // Янги иш парчасида бажариладиган код }); newThread.Start(); // Иш парчасини ишга тушириш- Иш парчалар пул (
ThreadPool): Иш парчаларини қайтадан ишлатиш, уларни яратиш ва йўқ қилиш харажатларини камайтириш учун.// Иш парчалар пулга вазифа қўйиш ThreadPool.QueueUserWorkItem((state) => { // Пулдан бир иш парчасида бажариладиган код }); - Вазифалар (
Task): Иш парчаларининг юқори даражадаги абстракцияси, Task Parallel Library (TPL) қисми. Асинхрон операциялар учун қулайроқ.// Вазифа яратиш ва ишга тушириш Task.Run(() => { // Вазифада бажариладиган код });
Рақобатлик, умумий маълумотларга киришда муаммоларга олиб келиши мумкин (ўзаро кураш шартлари, ўлгичлар), шунинг учун синхронлаштириш механизмларидан фойдаланиш талаб қилинади:
lockMutexSemaphoreMonitor