Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
03/16/11 18:05:56 (13 years ago)
Author:
ascheibe
Message:

#1233 worked on slave and slave service installer

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave/3.4/HeartbeatManager.cs

    r5599 r5721  
    3434    private Thread heartBeatThread;
    3535    private AutoResetEvent waitHandle;
     36    private WcfService wcfService;
     37    private bool threadStopped;
     38    ReaderWriterLockSlim heartBeatThreadIsSleepingLock = new ReaderWriterLockSlim();
    3639
    3740    public HeartbeatManager() {
     
    4245      Interval = interval;
    4346    }
    44 
    45     private WcfService wcfService;
    46 
    47     private bool threadStopped;
    48 
    49     ReaderWriterLockSlim heartBeatThreadIsSleepingLock = new ReaderWriterLockSlim();
    5047
    5148    /// <summary>
     
    7875
    7976    private void RunHeartBeatThread() {
     77      bool sleepForever;
    8078      while (!threadStopped) {
     79        sleepForever = false;
    8180        try {
    8281          lock (locker) {
     
    8887
    8988              Heartbeat heartBeatData = new Heartbeat {
    90                 SlaveId = info.Id, /*Settings.Default.Guid*/
     89                SlaveId = info.Id,
    9190                FreeCores = info.Cores.HasValue ? info.Cores.Value - ConfigManager.Instance.GetUsedCores() : 0,
    9291                FreeMemory = ConfigManager.GetFreeMemory(),
     
    102101                OnExceptionOccured(new Exception("Error getting response from Heartbeat"));
    103102              } else {
    104                 SlaveClientCom.Instance.ClientCom.LogMessage("Heartbeat Response received: ");
     103                SlaveClientCom.Instance.ClientCom.LogMessage("Heartbeat Response received (" + msgs.Count + "): ");
    105104                msgs.ForEach(mc => SlaveClientCom.Instance.ClientCom.LogMessage(mc.Message.ToString()));
    106105                msgs.ForEach(mc => MessageQueue.GetInstance().AddMessage(mc));
     106                //after fetching a job, we sleep until the core wakes us up!!
     107                msgs.ForEach(s => { if (s.Message == MessageContainer.MessageType.CalculateJob) sleepForever = true; });
    107108              }
    108109            }
     
    113114          OnExceptionOccured(e);
    114115        }
    115         waitHandle.WaitOne(this.Interval);
     116        if (sleepForever)
     117          waitHandle.WaitOne();
     118        else
     119          waitHandle.WaitOne(this.Interval);
    116120      }
    117121      waitHandle.Close();
Note: See TracChangeset for help on using the changeset viewer.