• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:スレッドのスケジューリングポリシーと優先順位の設定(pthread))

マルチスレッドのプログラミングでのスレッドの優先順位変更方法について

このQ&Aのポイント
  • マルチスレッドのプログラミングをする上で、pthread(スレッド)の優先順位の変更方法について教えてください。
  • また、メインのスレッドの優先順位も変更したいのですが、方法を教えてください。
  • 現在は、pthread_attr_setschedpolicy関数を使用して優先順位を変更していますが、思ったように変更できていないようです。

質問者が選んだベストアンサー

  • ベストアンサー
  • terra5
  • ベストアンサー率34% (574/1662)
回答No.1

OSは明記した方がいいでしょう。 また、各関数には戻り値があって、エラーが起きているかどうか判定できる物もあるはずですから、 戻り値はプログラム上で必ず確認してください。 エラーがあるかないかで話も違ってきますし。 また、変更されていない気がしますとありますが、 どうやって確認しましたか。 これもOSによって違ってくると思いますが。 また、プライオリティ制御はOSによってはルート権限が無いとできない操作もあります。 あとは、各スレッドの内容が問題になる場合もありますし、ライブラリ等は専用のマルチスレッド用の物を使わないといけない場合もあります。 ということで、現状ではよくわかりません(^^; これでも良く見るとわかるかも知れませんが、 補足が来てから考えます。

hiromichel
質問者

補足

ご返答有難うございます。説明不足で申し訳ありませんでした。 おかげ様でrootの権限で行うと出来るということがわかりました。 OSはRedHatLinux7.1Jです。現在はrootでは無いところで実行してました。 プログラムは、通信を行うもので、メインのスレッドでは受信処理、 別スレッドでは、インターバルタイマによるタイマの測定を行っており、タイムアップ通知をメインスレッドにsocketにて通知するというものです。 処理の高速化をはかるために優先度としては、 タイマを優先し、メインも優先度を上げたい状況でした。 確認は、setschedparamによる優先度設定の前と後でgetshcedparamを 行い、値をチェックするという方法でやっていました。すべての戻り値は0で、成功と表示されてました。 私が値が変わっていないを言ったのは、どうやらgetchedparamの戻り値を見ていたようでした…。 大変早とちりしてしまって申し訳ありません。 どうも有難うございました。