当前位置:  技术问答>linux和unix

高分等,这样用信号量有问题吗?

    来源: 互联网  发布时间:2016-04-18

    本文导语:  用以下方式使用信号量控制多进程互斥有问题吗? 能起到互斥效果吗?谢谢 #include  #include  #include  #include  #include  #include  #include  #include  #include  #include  #include  #include  #include  sem_t g_icc_reader_sem; void Proces...

用以下方式使用信号量控制多进程互斥有问题吗?
能起到互斥效果吗?谢谢

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

#include 

sem_t g_icc_reader_sem;

void Process1()
{
int rtn;
MonitorLog("1# g_icc_reader_sem = %dn", &g_icc_reader_sem);

while(1)
{
sem_wait(&g_icc_reader_sem);
MonitorLog("1111#!n");
MonitorLog("1111@n");
MonitorLog("1111%n");
sem_post(&g_icc_reader_sem);
 
sleep(5);
//sleep(5);
}//end while
}

void Process2()
{
int rtn;
int atrLen;
int nWriteLen;
int nCount;
int nCmdLen;
char value[200];
uchar dataBuf[200];
uchar testbuf[50]; 
char testbuf2[20];

memset(testbuf2, 0, 20);
memset(testbuf, 0, 50);

strcpy(testbuf, "E116.40226;N39.98754;30#");

MonitorLog("2# g_icc_reader_sem = %dn", &g_icc_reader_sem);

while(1)
{
sem_wait(&g_icc_reader_sem);
MonitorLog("222#!n");
MonitorLog("222@n");
MonitorLog("2222%n");
rtn = 0;
sem_post(&g_icc_reader_sem);
sleep(5);
//sleep(5);
}//end while
}

void Process3()
{
int rtn;
int atrLen;
int nWriteLen;
int nCount;
int nCmdLen;
char value[200];
uchar dataBuf[200];
uchar testbuf[50]; 
char testbuf2[20];

memset(testbuf2, 0, 20);
memset(testbuf, 0, 50);

strcpy(testbuf, "E116.40226;N39.98754;30#");

MonitorLog("3# g_icc_reader_sem = %dn", &g_icc_reader_sem);

while(1)
{
sem_wait(&g_icc_reader_sem);
MonitorLog("3333#!n");
MonitorLog("3333@n");
MonitorLog("3333%n");

sem_post(&g_icc_reader_sem);
 
sleep(5);
//sleep(5);
}//end while
}

pid_t StartProcess1()
{
pid_t pid;
pid=fork();
if(pid==0)
{
Process1();
exit(0); //子进程退出
}
return pid;
}

pid_t StartProcess2()
{
pid_t pid;
pid=fork();
if(pid==0)
{
Process2();
exit(0);
}
return pid;
}

pid_t StartProcess3()
{
pid_t pid;
pid=fork();
if(pid==0)
{
Process3();
exit(0);
}
return pid;
}

int main()
{
  int rtn;
pid_t pid1;
pid_t pid2;
pid_t pid3;

sem_init(&g_icc_reader_sem, 0, 1);

CheckMonitorLogNum(); //检测日志文件数量

pid1 = StartProcess1();
if(pid1 

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 高分求助高分求助高分求助高分求助高分求助高分求助
  • 谁参加过weblogic的证书考试,是否有经验可供参考?高分高分高高分
  • 哪里有JB6下载啊,高分相送,救命
  • 高分求救!我在uclinux上运行应用程序时出现内存分配错误,不知如何解决,解决者高分!!
  • 哪里去找中文的EJB文章?高分悬赏!
  • 有jsp的upload和download 代码么,高分相报!
  • (高分求助)请问,那里有软件开发的<设计文档>
  • 高分寻求jsp代码(网上调查系统,新闻发布系统)就这点分了
  • 高分求购做饼图、线形图的源吗?
  • 关于linu下的中文输入.(高分:300)
  • 一个简单的问题,高分求助!!!
  • 高分求购jbulider6得注册码,企业版本,个人版本都要
  • Linux远程访问的问题,高分求教:)
  • 请问哪儿有Solaris8的光盘映像文件下载???高分相赠!!!
  • 高分求“Ration Rose”&"JBuilder6.0"&"VisualCafe"
  • VJ的一个问题,高分求助,熟悉VJ得请进!
  • 高分求购:linux和unix命令大全电子文档
  • 急救:关于BLOB数据类型---在线等待,高分相送!
  • 求UNIXWARE7.11的原版下载,高分相赠,在线等待!!!
  • 关于java?高分相送!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3