Tohle skutecne neni dobre reseni - napriklad vubec neresi synchronizaci pristupu ke globalnimu registru zamku a tak to nema zadnou garanci, ze to skutecne bude fungovat. Namatkou radek 140 kde se klidne muze stat ze dve vlakna provedou ten samy test a kazde si vytvori vlastni zamek se stejnym jmenem. A to neresim nekonzistentni pojmenovani a preklepy (mklock vs mkLock, ...)
Napsat spravne thread-safe kod neni vubec jednoduche, v pythonu obzvlast - clovek se musi zamyslet nad kazdou operaci nejen v jeho kodu. Ale to jsme uz hodne daleko od puvodniho tematu :) Honza Král E-Mail: honza.k...@gmail.com Phone: +420 606 678585 2015-02-10 14:45 GMT+01:00 Petr Messner <petr.mess...@gmail.com>: > Už to asi vidím, každý klient má své vlákno (leda že by se samotný klient > používal vícevláknově). Příště si dám větší pauzu před odesláním :) > > > PM > > > Dne 10. února 2015 14:39 Petr Messner <petr.mess...@gmail.com> napsal(a): > >> Jak jsou jednotlivé zprávy od sebe odděleny? Vidím tam v klientovi >> >> >> def communicate(self, data): >> self._socket.send('%s %s' % (self.name, data)) >> self._socket.recv(self.buffer_size) >> >> >> >> A server to čte takto: >> >> while True: >> data = self._socket.recv(self.buffer_size) >> >> if data in ('', '\n', '\r\n'): >> return >> >> try: >> who, op, name = data.split() >> except ValueError: >> raise ValueError('Invalid data') >> >> >> >> Co když se zprávy pošlou náhodou tak, že >> self._socket.recv(self.buffer_size) přijme dvě zprávy najednou? To mu pak >> přijde něco jako "client1 mklock lock1client2 mklock lock2" a nebude to >> fungovat - server spadne. >> >> PM >> >> >> Dne 10. února 2015 14:15 Pavel S <pa...@schon.cz> napsal(a): >> >>> Jeste existuje tzv. DLM (Distributed Lock Manager). Zjednodusene receno, >>> je to mutex, ktery je pristupny po siti. >>> >>> Jeden takovy jednoduchy distributed lock manager jsem napsal v pythonu a >>> umistil na activestate zde: >>> http://code.activestate.com/recipes/578194-distributed-lock-manager-for-python/ >>> _______________________________________________ >>> Python mailing list >>> python@py.cz >>> http://www.py.cz/mailman/listinfo/python >>> >>> Visit: http://www.py.cz >> >> > > > _______________________________________________ > Python mailing list > python@py.cz > http://www.py.cz/mailman/listinfo/python > > Visit: http://www.py.cz _______________________________________________ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz