进程间信令:POSIX信号量/共享内存与TCP套接字

时间:2018-10-06 05:08:25

标签: c++ linux sockets optimization semaphore

我正在制作一个应用程序,它必须与同一台计算机上的另一个进程进行通信。我需要从根级进程向UI进程发出错误信号。为此,我正在使用信号量。内核级进程循环运行并出现错误,它会锁定信号量并将错误类型写入共享内存段中。 UI进程在循环中监视信号量时,如果发现信号量已锁定,则会在共享内存段中将错误类型和错误类型通知用户。

//err_sem= named semaphore
P1_root_lvl()
{
while(1)
{
    //Do Work

    if(error_type1)
    {
        err_flag=true;
        sem_trywait(&err_sem);
        shared_mem=type1;
    }
    else if(error_type2)
    {
        err_flag=true;
        sem_trywait(&err_sem);
        shared_mem=type2;
    }
    else if(ok_state==true && err_flag==true)
    {
        sem_post(&err_sem);
        err_flag=false;
    }

}
}

P2_UI()
{
long sleep_time=10000
while(1)
{
    sem_getvalue(&err_sem,ok)
    if(ok==1)
    {
        //All OK
    }
    else if(ok==0)
    {
        err_type=shared_mem;
    }
    usleep(sleep_time);
}
}

P1正在高优先级上运行。 我有许多其他模块同时在系统中运行。

  1. 当我增加/减少sleep_time时,性能有何不同?
  2. 如果我使用套接字向UI进程发出信号(P1作为客户端,P2作为服务器),性能会有什么不同?
  3. 我还能做些什么来优化我正在使用的这种机制?

0 个答案:

没有答案