Queue   otázka

VB.NET

Dobrý den,

mám příchozí data, ta mohou přicházet ve více vláknech. zpracovat data však potřebuji udělat v jednom vlákně... to znamená více vláken mi bude plnit nějakou frontu a v jednom vlákně budu z fronty data odebírat a zpracovávat. Poradí někdo jak na to?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Vytvoří se sdílená proměnná a při práci v každém vlákně se bude zamykat.

Shared m_Test as integer

Public Sub Neco()
   SyncLock m_Test
     'Tady si s proměnnou dělám co se mi zachce
     'Ostatní vlákna čekají na odemčení
   EndSyncLock  
End Sub

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Akorát tu synchronizaci nedělejte na integeru, ale na Shared proměnné typu Object.

Zamykat musíte při přidávání položky do fronty i při jejím čtení.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Zvážil bych použití System.Threading.ReaderWriterLockSlim místo SyncLock pokud dochází k častému čtení.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback