teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

4

refine

2020/08/31 14:17

投稿

yohhoy
yohhoy

スコア6191

answer CHANGED
@@ -15,4 +15,6 @@
15
15
 
16
16
  ご自身で言及されている通り、他スレッドのサスペンドは大変危険な処理です。~~自己責任で前掲FAQにある`SIGSTOP`/`SIGCONT`シグナルを試してみてください。~~ NPTLでは[`SIGSTOP`はおそらく期待通りに機能しません](https://man7.org/linux/man-pages/man3/pthread_kill.3.html)。
17
17
 
18
- 参考までに、[StackOverflowのこの回答](https://stackoverflow.com/questions/2208833/)がやりたいことに最も近いかもしれません。いずれにせよ、Linuxシグナルとマルチスレッド実装に対する正確な理解が必要となります。
18
+ 参考までに、[StackOverflowのこの回答](https://stackoverflow.com/questions/2208833/)がやりたいことに最も近いかもしれません。いずれにせよ、Linuxシグナルとマルチスレッド実装に対する正確な理解が必要となります。
19
+
20
+ 前掲FAQにもあるように、[Solaris](https://ja.wikipedia.org/wiki/Solaris)ではスレッドサスペンド/レジュームAPIを提供しています。同スレッドをエミュレーションする [Solaris-compatible Thread Library](https://sourceforge.net/projects/sctl/) が存在しますのでどうしてもという場合は参考になるかもしれません。(ちらっと覗いた雰囲気では、サスペンドされる側にも相当な仕掛けを用意していましたが)

3

refine

2020/08/31 14:17

投稿

yohhoy
yohhoy

スコア6191

answer CHANGED
@@ -13,6 +13,6 @@
13
13
  ----
14
14
  > (他スレッドからの任意のSuspend、Resumeは本質的に危険だからやめたほうがいいという議論は、行わない方向でお願いします。)
15
15
 
16
- ご自身で言及されている通り、他スレッドのサスペンドは大変危険な処理です。自己責任で前掲FAQにある`SIGSTOP`/`SIGCONT`シグナルを試してみてください。
16
+ ご自身で言及されている通り、他スレッドのサスペンドは大変危険な処理です。~~自己責任で前掲FAQにある`SIGSTOP`/`SIGCONT`シグナルを試してみてください。~~ NPTLでは[`SIGSTOP`はおそらく期待通りに機能しません](https://man7.org/linux/man-pages/man3/pthread_kill.3.html)。
17
17
 
18
18
  参考までに、[StackOverflowのこの回答](https://stackoverflow.com/questions/2208833/)がやりたいことに最も近いかもしれません。いずれにせよ、Linuxシグナルとマルチスレッド実装に対する正確な理解が必要となります。

2

refine

2020/08/31 14:05

投稿

yohhoy
yohhoy

スコア6191

answer CHANGED
@@ -1,6 +1,6 @@
1
1
  C++20標準ライブラリ、およびLinux環境のPThreadsライブラリでは 「他スレッドのサスペンド処理」 を提供しません。
2
2
 
3
- [LinuxThreads Frequently Asked Questions](http://ljk.imag.fr/membres/Jean-Guillaume.Dumas/Enseignements/Polys/Externes/Thread_FAQ.html) より引用:
3
+ Linuxカーネルでは [LinuxThreads](https://en.wikipedia.org/wiki/LinuxThreads) ではなく [NPTL(Native POSIX Thread Library)](https://en.wikipedia.org/wiki/Native_POSIX_Thread_Library) が利用されますが、旧 [LinuxThreads Frequently Asked Questions](http://ljk.imag.fr/membres/Jean-Guillaume.Dumas/Enseignements/Polys/Externes/Thread_FAQ.html) のPOSIXへの言及についてはNPTL現在も同じです。
4
4
 
5
5
  > E.4: How can I suspend and resume a thread from another thread? Solaris has the `thr_suspend()` and `thr_resume()` functions to do that; why don't you?
6
6
  >
@@ -13,6 +13,6 @@
13
13
  ----
14
14
  > (他スレッドからの任意のSuspend、Resumeは本質的に危険だからやめたほうがいいという議論は、行わない方向でお願いします。)
15
15
 
16
- ご自身で言及されている通り、他スレッドのサスペンドは大変危険な処理です。自己責任で前掲FAQにある`SIGSTOP`/`SIGCONT`シグナルを試してください。
16
+ ご自身で言及されている通り、他スレッドのサスペンドは大変危険な処理です。自己責任で前掲FAQにある`SIGSTOP`/`SIGCONT`シグナルを試してみてください。
17
17
 
18
18
  参考までに、[StackOverflowのこの回答](https://stackoverflow.com/questions/2208833/)がやりたいことに最も近いかもしれません。いずれにせよ、Linuxシグナルとマルチスレッド実装に対する正確な理解が必要となります。

1

refine

2020/08/31 13:47

投稿

yohhoy
yohhoy

スコア6191

answer CHANGED
@@ -1,3 +1,5 @@
1
+ C++20標準ライブラリ、およびLinux環境のPThreadsライブラリでは 「他スレッドのサスペンド処理」 を提供しません。
2
+
1
3
  [LinuxThreads Frequently Asked Questions](http://ljk.imag.fr/membres/Jean-Guillaume.Dumas/Enseignements/Polys/Externes/Thread_FAQ.html) より引用:
2
4
 
3
5
  > E.4: How can I suspend and resume a thread from another thread? Solaris has the `thr_suspend()` and `thr_resume()` functions to do that; why don't you?
@@ -11,4 +13,6 @@
11
13
  ----
12
14
  > (他スレッドからの任意のSuspend、Resumeは本質的に危険だからやめたほうがいいという議論は、行わない方向でお願いします。)
13
15
 
14
- ご自身で言及されている通り、他スレッドのサスペンドは大変危険な処理です。自己責任で前掲FAQにある`SIGSTOP`/`SIGCONT`シグナルを試してください。Linuxシグナルとマルチスレッド実装に対する正確な理解が必要となります。
16
+ ご自身で言及されている通り、他スレッドのサスペンドは大変危険な処理です。自己責任で前掲FAQにある`SIGSTOP`/`SIGCONT`シグナルを試してください。
17
+
18
+ 参考までに、[StackOverflowのこの回答](https://stackoverflow.com/questions/2208833/)がやりたいことに最も近いかもしれません。いずれにせよ、Linuxシグナルとマルチスレッド実装に対する正確な理解が必要となります。