当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:56:00  来源:本站整理

实例解析C++/CLI线程之线程状况长期性[VC/C++编程]

赞助商链接



  本文“实例解析C++/CLI线程之线程状况长期性[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

其他情势的同步

我们可以利用类Monitor与类Thread中的某些函数,直接掌握线程的同步,请看例1.

例1:

using namespace System;
using namespace System::Threading;
int main()
{
  /*1*/ MessageBuffer^ m = gcnew MessageBuffer;
  /*2a*/ ProcessMessages^ pm = gcnew ProcessMessages(m);
  /*2b*/ Thread^ pmt = gcnew Thread(gcnew ThreadStart(pm,&ProcessMessages::ProcessMessagesEntryPoint));
  /*2c*/ pmt->Start();
  /*3a*/ CreateMessages^ cm = gcnew CreateMessages(m);
  /*3b*/ Thread^ cmt = gcnew Thread(gcnew ThreadStart(cm, &CreateMessages::CreateMessagesEntryPoint));
  /*3c*/ cmt->Start();
  /*4*/ cmt->Join();
  /*5*/ pmt->Interrupt();
  /*6*/ pmt->Join();
  Console::WriteLine("Primary thread terminating");
}
public ref class MessageBuffer
{
  String^ messageText;
  public:
   void SetMessage(String^ s)
   {
    /*7*/ Monitor::Enter(this);
    messageText = s;
    /*8*/ Monitor::Pulse(this);
    Console::WriteLine("Set new message {0}", messageText);
    Monitor::Exit(this);
   }
   void ProcessMessages()
   {
    /*9*/ Monitor::Enter(this);
    while (true)
    {
     try
     {
      /*10*/ Monitor::Wait(this);
     }
     catch (ThreadInterruptedException^ e)
     {
      Console::WriteLine("ProcessMessage interrupted");
      return;
     }
     Console::WriteLine("Processed new message {0}", messageText);
    }
    Monitor::Exit(this);
   }
};
public ref class CreateMessages
{
  MessageBuffer^ msg;
  public:
   CreateMessages(MessageBuffer^ m)
   {
    msg = m;
   }
   void CreateMessagesEntryPoint()
   {
    for (int i = 1; i <= 5; ++i)
    {
     msg->SetMessage(String::Concat("M-", i.ToString()));
     Thread::Sleep(2000);
    }
    Console::WriteLine("CreateMessages thread terminating");
   }
};
public ref class ProcessMessages
{
  MessageBuffer^ msg;
  public:
   ProcessMessages(MessageBuffer^ m)
   {
    msg = m;
   }
   void ProcessMessagesEntryPoint()
   {
    msg->ProcessMessages();
    Console::WriteLine("ProcessMessages thread terminating");
   }
};


  以上是“实例解析C++/CLI线程之线程状况长期性[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • Windows 7远程帮忙利用实例解析
  • Java程序最简单犯的21种错误实例解析
  • 基于J2EE的电子商务网站实例解析
  • 实例解析C++/CLI的串行化
  • 实例解析C++/CLI的"克隆"
  • 实例解析C++/CLI线程之多任务
  • 实例解析C++/CLI线程之线程状况长期性
  • <b>实例解析C++/CLI之开卷有益</b>
  • <b>实例解析C++/CLI之值范例</b>
  • <b>实例解析C++/CLI之代理与事件</b>
  • 实例解析C++/CLI之静态构造函数
  • 实例解析C++/CLI中的担当与列举
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .