Sobes.tech
Junior

Мо чӣ гуна аст дар контексти бисёрсоҳавӣ?

sobes.tech AI

Ҷавоб аз AI

Рақобатлик — бу тизимнинг бир вақтнинг ўзида бир неча вазифани бажариш қобилиятидир, улар умумий ресурсларни бўлишиши мумкин. Кўп иш парчаларида бу, ҳар бири ўз вазифасини ишлай оладиган бир нечта иш парчаларини ишга тушириш орқали амалга оширилади.

C#да рақобатликка эришиш механизмларининг мисоллари:

  • Thread синфи: Тўғридан-тўғри иш парчаларини яратиш ва бошқариш.
    // Янги иш парчасини яратиш
    Thread newThread = new Thread(() => {
        // Янги иш парчасида бажариладиган код
    });
    newThread.Start(); // Иш парчасини ишга тушириш
    
  • Иш парчалар пул (ThreadPool): Иш парчаларини қайтадан ишлатиш, уларни яратиш ва йўқ қилиш харажатларини камайтириш учун.
    // Иш парчалар пулга вазифа қўйиш
    ThreadPool.QueueUserWorkItem((state) => {
        // Пулдан бир иш парчасида бажариладиган код
    });
    
  • Вазифалар (Task): Иш парчаларининг юқори даражадаги абстракцияси, Task Parallel Library (TPL) қисми. Асинхрон операциялар учун қулайроқ.
    // Вазифа яратиш ва ишга тушириш
    Task.Run(() => {
        // Вазифада бажариладиган код
    });
    

Рақобатлик, умумий маълумотларга киришда муаммоларга олиб келиши мумкин (ўзаро кураш шартлари, ўлгичлар), шунинг учун синхронлаштириш механизмларидан фойдаланиш талаб қилинади:

  • lock
  • Mutex
  • Semaphore
  • Monitor