Changeset 1172


Ignore:
Timestamp:
Feb 23, 2010, 7:32:21 PM (12 years ago)
Author:
Sven Rech
Message:

used try..finally in KeySearcher when using mutexes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/CrypPlugins/KeySearcher/KeySearcher.cs

    r1166 r1172  
    319319                        if (maxThread == threadid && threadStack.Count != 0)
    320320                        {
    321                             maxThreadMutex.WaitOne();
    322                             if (maxThread == threadid && threadStack.Count != 0)
    323                             {                               
    324                                 KeyPattern[] split = pattern.split();
    325                                 if (split != null)
     321                            try
     322                            {
     323                                maxThreadMutex.WaitOne();
     324                                if (maxThread == threadid && threadStack.Count != 0)
    326325                                {
    327                                     patterns[threadid] = split[0];
    328                                     pattern = split[0];
    329                                     ThreadStackElement elem = (ThreadStackElement)threadStack.Pop();
    330                                     patterns[elem.threadid] = split[1];
    331                                     elem.ev.Set();    //wake the other thread up                                   
    332                                     size = pattern.size();
    333                                     keysLeft[threadid] = size;
    334                                 }                           
    335                                 maxThread = -1;
     326                                    KeyPattern[] split = pattern.split();
     327                                    if (split != null)
     328                                    {
     329                                        patterns[threadid] = split[0];
     330                                        pattern = split[0];
     331                                        ThreadStackElement elem = (ThreadStackElement)threadStack.Pop();
     332                                        patterns[elem.threadid] = split[1];
     333                                        elem.ev.Set();    //wake the other thread up                                   
     334                                        size = pattern.size();
     335                                        keysLeft[threadid] = size;
     336                                    }
     337                                    maxThread = -1;
     338                                }
    336339                            }
    337                             maxThreadMutex.ReleaseMutex();
     340                            finally
     341                            {
     342                                maxThreadMutex.ReleaseMutex();
     343                            }
    338344                        }
    339345
     
    589595                if (size - keycounter > 1000)
    590596                {
    591                     maxThreadMutex.WaitOne();
    592                     BigInteger max = 0;
    593                     int id = -1;
    594                     for (int i = 0; i < patterns.Length; i++)
    595                         if (keysleft[i] != null && keysleft[i] > max)
    596                         {
    597                             max = keysleft[i];
    598                             id = i;
    599                         }
    600                     maxThread = id;
    601                     maxThreadMutex.ReleaseMutex();
     597                    try
     598                    {
     599                        maxThreadMutex.WaitOne();
     600                        BigInteger max = 0;
     601                        int id = -1;
     602                        for (int i = 0; i < patterns.Length; i++)
     603                            if (keysleft[i] != null && keysleft[i] > max)
     604                            {
     605                                max = keysleft[i];
     606                                id = i;
     607                            }
     608                        maxThread = id;
     609                    }
     610                    finally
     611                    {
     612                        maxThreadMutex.ReleaseMutex();
     613                    }
    602614                }
    603615                #endregion
Note: See TracChangeset for help on using the changeset viewer.