perldoc-Themen sagt:
Von der Verwendung von Interpreter-basierten Threads in Perl wird offiziell abgeraten.
Gibt es andere Perl-basierte Threads? Oder sollten wir einfach keine Threads in Perl verwenden?
Hängt davon ab, was Sie erreichen möchten. Ich verwende immer noch Threads ausgiebig und es gibt kein großes Problem mit ihnen.
Das größte Problem mit ihnen ist, dass sie nicht leicht sind, und wenn Sie in andere Sprachen eingefädelt haben, könnten Sie davon ausgehen, dass sie das auch sind.
Sie sind eher das Gegenteil - das Erstellen eines Threads ist wie das erneute Starten des Codes, aber mit einigen nützlichen Hooks für IPC. Das bedeutet, dass Sie nicht wirklich ein Task-per-Thread-Programmmodell erstellen möchten, wie Sie vielleicht denken.
Stattdessen würden Sie viel besser von einem Thread::Queue
worker-thread-Modell versorgt. Hier ist ein Beispiel dafür:
Perl dämonisiert mit Kinddämonen
Sie können jedoch die Verwendung von fork
als Alternative in Erwägung ziehen. fork
- aufgrund seiner Implementierung unter Unix - ist ein sehr effizienter Systemaufruf und kann sehr effizient sein, um neue Prozesse hervorzubringen.
Der Nachteil ist - es ist nicht ganz so freundlich für IPC.
Parallel::ForkManager
ist ein Modul, das ich gerne für Multiprocessing forking tun.
Aber in jedem Fall sollten Sie beachten - Multiprozessing ist kein Wundermittel. Es lässt Sie mehr CPUs hemmen wenn Sie die richtige Art von Problem zu lösen haben. Es wird Ihre Festplatten nicht schneller machen:)
Solange ich weiß, gibt es keine zuverlässigen Thread-Implementierungen. Du solltest bei einigen ereignisbasierten Modulen bleiben, wie Coro , AnyEvent , IO :: Async usw.
Tags und Links multithreading perl