Ahoj,
mám ještě obecný dotaz. Raději jsem vytvořil nové vlákno, ať se to nemotá dohromady s předšlým.
Vyvinul jsem digitální I/O kartu připojenou přes USB 2.0 jako USB Device Vendor Class. Jako ovladač používám libusbK. Potřebuji navrhnout DLL s API rozhraním umožňující práci s připojenými USB kartami.
Nevím, jak správně vytvořit knihovnu, aby byla Thread-save. K PC může být připojená víc jak jedna karta. Tedy API funkce budou mít jako jeden parametr index značící se kterou kartou chce aplikace pracovat. Index dané karty si zjistí na počátku na základě sériového čísla karty (buď bude aplikace znát nebo si vyčte z knihovny všechny připojené zařízení). -- Nesmí dojít k tomu, že se budou stejné nebo rozdílné funkce pro jednu kartu volat v jednom okamžiku. Obdobně je třeba to samé řešit pokud dva nezávislé procesy budou chtít přistupovat k jedné kartě (to nesmí).
No zatím si to představuji tak, že budu mít nějaký globální list struktur (handle na mutex, aktualni konfigurace, stavové proměnné) reprezentující jednotlivé karty. Pokud bude aplikace chtít použít danou kartu, tak se vytvoří mutex (tedy nejen vlákna ale i ten druhý proces/aplikace bude vědět, že karta je využívána). Samotný globální list by taktéž měl být chráněn mutexem. -- Nevím jestli je to nejšťastnější řešení. Co myslíte?