[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Checking network input processing by Python for a multi-threaded server

> In any multi-threaded application, you must be carefull when
> accessing (and especially modifying) shared (e.g. "global") objects.
> In general, you will need locks to synchronize the access.

I agree to this general view.

> Appending to a list (and some other elementary operations
> on Python data structures) is protected by Python's "GIL"
> (= "Global Interpreter Lock") and thereby becomes "atomic".
> Thus, if all you do is appending - then the append has no need
> of explicite locking.

Thanks for such information.

> It does not protect the integrity of your data structures.

It can be that the data protection needs to be extended occasionally.
But I am more interested in the detail that a specific Python list variable
should reflect the received record sets from a single test command
in a consistent way.

Did all extra worker threads exit after the statement ?server.shutdown()?
was successfully executed?

> Thus, if your threads modify shared objects, then you are responsible
> to protect access to them with appropriate locking.

How do you think about to improve the distinction for the really
desired lock granularity in my use case?