Designproblem



  • Hi,

    ich habe zwei Klassen geschrieben:

    Die Klasse Mutex:

    class Mutex
    {
    private:
    	HANDLE mutex;
    
    public:
    	bool init();
    	void lock();
    	void unlock();
    };
    

    Die Klasse Server:

    class Server
    {
    private:
    	HANDLE hThread;
    	DWORD dwThreadId;
    	Mutex& mutex;
    
    public:
    	Server();
    	bool start();
    	void wait();
    	static DWORD WINAPI serverMain(LPVOID param);
    };
    

    Ich möchte gerne ein Mutex an diese Klasse übergeben, damit dieser in der Threadfunktion benutzt werden kann. Allerdings muss ich es dazu static machen... Wenn ich es aber static mache, dann kann ich es nicht mehr korrekt initalisieren, etc. Insgesamt scheint das alles sehr unschön zu werden. Daher meine Frage: Wie löse ich das Problem am Besten?

    Danke



  • Uebergib in LPVOID param einen Zeiger auf die Server-Instanz. Damit kannst du dann auf das Server-Objekt und damit auf die darin gespeicherte Referenz zu dem Mutex zugreifen.

    Noch ein paar Bemerkungen:
    Die init-Methode aus Mutex wuerde ich in den Konstruktor verlagern und nicht im Interface der Klasse lassen.
    Aehnliches gilt fuer:

    static DWORD WINAPI serverMain(LPVOID param);
    

    Die gehoert private gemacht.


Anmelden zum Antworten