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