2013-02-25 51 views
1

我希望所有線程(在Linux上運行的多線程C代碼中)在特定時間後調用函數。我試過報警()。它不是線程安全的:Only one SIGALRM generation can be scheduled in this manner. If the SIGALRM signal has not yet been generated, the call shall result in rescheduling the time at which the SIGALRM signal is generated

有沒有什麼方法可以實現這樣的功能,並保證線程可以調用該函數並在當時離開當前的任務?多線程 - 每個線程在特定時間後調用函數

+0

你說什麼樣的時間框架。多少個線程,他們在做什麼。你可能會接近這個,但保證它不是真的。 – 2013-02-25 23:08:46

+0

線程正在運行一些openmp任務。我想打斷他們目前的工作,讓他們做別的事情,然後回到他們的工作。大約100個線程。我可以稍後考慮確切時間。有沒有辦法做到這一點?多少接近? – 2013-02-25 23:14:15

+0

是否需要在確切的時間段後中斷它們?也許一個「完成工作」的計數器就足夠了。 – congusbongus 2013-02-25 23:23:18

回答

0

你有其他線程的所有pthread_t的數組嗎?如果是這樣,迭代陣列並使用pthread_kill將信號發送到其他線程。

您可以在主線程或單獨的線程中執行此操作。

請注意,在信號處理程序中沒有太多可以安全執行的操作。除了write之外,沒有I/O,特別是。