[Python-de] threads

wg wg1 at gmx.net
Di Sep 25 17:39:19 CEST 2012


On 25.09.2012 14:09, Christian Heimes wrote:
> Am 25.09.2012 13:52, schrieb Diez Roggisch:
>> Angehalten oder abgebrochen? Wenn letzteres, dann vielleicht doch besser
>> über das Modul multiprocessing gehen + einfach den Subprozess töten.
>>
>> Und in Antwort auf deine andere Mail: nein, ich habe da keinen
>> Beispielcode, und ich zweifele auch ein bisschen an der Durchführbarkeit.
>>
>> Eine Garantie für dieses Verhalten kann es letztlich auch mit dem GIL
>> nicht geben, denn wie gesagt - wenn du dich da in einem C-Callstack
>> befindest, dann hat das GIL da keinen Einfluss mehr.
>
> Diez hat absolut recht.
>
> Das gewünschte Verhalten ist mit threads nicht umsetzbar. Wenn du einen
> Programmablauf zu jeder Zeit, sofort und zuverlässig beenden willst,
> dann musst du einen weiteren Prozess verwenden. Nicht mal
> pthread_cancel() oder pthread_kill() garantieren ein verlässliches und
> zeitnahes beenden eines Threads. Mal abgesehen davon, dass bei
> pthread_kill() dein Programm in einem undefinierten Zustand hängen wird.
>
> Dein Problem ist unabhängig von Python und ist auch mit reinem C-Code
> nicht umsetzbar. Selbst bei Prozessen geht es mit SIGTERM, SIGKILL,
> SIGSTOP / SIGCONT nicht zuverlässig synchron.
>
> Christian
>
>
Naja, SuspendThread(thread) und ResumeThread(thread) macht in C/C++ das 
was ich will.
Detto Siganlhandling. Nur gibt's unter Windows kein  SIGSTOP, SIGCONT, 
SIGUSER1/2 etc; das geht nur auf Nixen.

Also wird's wohl eine C-nahe Lösung werden.

Danke für deinen Kommentar.
Wolf



Mehr Informationen über die Mailingliste python-de