私は2つのスレッドを作成しましたが、作成後にそれらの優先順位を確認したいと思います:-このために、次のコードを記述しました:-
#include <iostream>
#include <unistd.h>
#include <pthread.h>
#include <sched.h>
#include <string.h>
#include <errno.h>
int main()
{ //something
struct sched_param main_param, t1_param, t2_param;
pthread_t t1, t2;
int *sched1, *sched2;
if (pthread_create(&t1, NULL, fn1, NULL) != 0) // inside fn1 thread sleeps in loop
{
std::cout << "couldn't create t1" << std::endl;
return -1;
}
if (pthread_create(&t2, NULL, fn2, NULL) != 0) //inside fn2 thread sleeps in loop
{
std::cout << "couldn't create t2" << std::endl;
return -1;
}
if (pthread_getschedparam(t1, sched1, &t1_param) != 0)
{
std::cout << "error setting priority for T1: (" << errno << "), " <<
strerror(errno) << std::endl;
}
std::cout << "t1 thread will have a prio of " << t1_param.sched_priority << std::endl;
if (pthread_getschedparam(t1, sched2, &t1_param) != 0)
{
std::cout << "error setting priority for T1: (" << errno << "), " <<
strerror(errno) << std::endl;
}
std::cout << "t2 thread will have a prio of " << t2_param.sched_priority <<std::endl;
// something
}
pthread_getschedparam
セグメンテーション違反が発生していることに関連するコードを追加した場合にのみ、コードは正常に機能します。私はここで何か間違ったことをしていますか?私もarhumentsched1
を交換してみましsched2
たNULL