比方說,我有10個線程同時運行。線程完成後有沒有什麼辦法調用某種方法?我想的是一樣的東西:當Perl線程完成其工作時,有什麼辦法可以做些什麼嗎?
$thread->onFinish(sub { print "I'm done"; });
比方說,我有10個線程同時運行。線程完成後有沒有什麼辦法調用某種方法?我想的是一樣的東西:當Perl線程完成其工作時,有什麼辦法可以做些什麼嗎?
$thread->onFinish(sub { print "I'm done"; });
你在標題中詢問的問題和你在身體中詢問的問題是不同的。
不同線程找出線程是否仍在運行的標準方法是根據您的特定需求等待或使用is_running
和/或is_joinable
進行輪詢。
如果您只想打印i'm done
,那麼請確保它是在線程主體中執行的最後一條語句,並且將被打印。
threads->create(sub {
# call the actual routine that does the work
print "i'm finished\n";
});
我真的在黑暗中在這裏,所以它只是一個一般的建議:你可以實現一個回調機制。如果沒有其他的東西,你可以在線程啓動時用onFinish方法傳遞一個對象。並在線程完成工作時根據線程的內部狀態從線程中調用該函數。