gpt4 book ai didi

perl - 为什么我的 Perl 线程在第一次运行时随机执行,但在后续运行时按顺序执行?

转载 作者:行者123 更新时间:2023-12-02 08:59:34 26 4
gpt4 key购买 nike

在测试问题代码 How can I store per-thread state between calls in Perl? 的过程中我注意到,第一次执行脚本时,线程执行彼此很好地交错。但在脚本的所有后续执行中,所有线程几乎完全按照其创建顺序运行,几乎没有交错。这是 Ubunutu 9.04 上的 Perl ithreads。

也许有人可以告诉我发生了什么事?

最佳答案

您的线程按创建顺序运行主要是由于 Perl 和操作系统中的实现细节(主要是因为它们各自的执行时间低于操作系统的最短执行时间片)。要交错线程,您可以使用 sleep 而不是 Yield(或让线程执行一些实际工作)。

请记住,Perl 线程中的 yield 只是一个建议,这与其他一些语言中的 Yield 工作方式不同。由于 Perl 线程是并发的,并且主要由操作系统的调度程序管理,除非您使用某种互斥锁来阻止执行,否则实际上不可能预测它们的执行顺序。

关于perl - 为什么我的 Perl 线程在第一次运行时随机执行,但在后续运行时按顺序执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2317507/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com