Changeset 649 for branches/devel


Ignore:
Timestamp:
Jun 27, 2007 9:55:57 AM (12 years ago)
Author:
forrest
Message:

fix bug with 12 cpus

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/devel/Cbc/src/CbcModel.cpp

    r648 r649  
    6565#ifdef CBC_THREAD
    6666#include <pthread.h>
    67 //#define CBC_THREAD_DEBUG 1
     67#define CBC_THREAD_DEBUG 1
     68#ifdef CBC_THREAD_DEBUG
     69#ifdef NDEBUG
     70#undef NDEBUG
     71#undef assert
     72#         define assert(expression) {                              \
     73             if (!(expression)) {                                          \
     74                throw CoinError(__STRING(expression), __PRETTY_FUNCTION__, \
     75                                "", __FILE__, __LINE__);                   \
     76             }                                                             \
     77          }
     78#endif
     79#endif
    6880// To Pass across to doOneNode
    6981typedef struct {
     
    14501462    if (tree_->empty()) {
    14511463#ifdef CBC_THREAD
     1464#ifdef COIN_DEVELOP
     1465      printf("empty\n");
     1466#endif
    14521467      if (numberThreads_) {
    14531468        // may still be outstanding nodes
     
    14601475        }
    14611476        if (iThread<numberThreads_) {
     1477#ifdef COIN_DEVELOP
     1478          printf("waiting for thread %d code 0\n",iThread);
     1479#endif
    14621480          unlockThread();
    14631481          locked = false;
     
    14961514          threadInfo[iThread].returnCode=-1;
    14971515          threadStats[4]++;
     1516#ifdef COIN_DEVELOP
     1517          printf("thread %d code now -1\n",iThread);
     1518#endif
    14981519          continue;
    14991520        } else {
     1521#ifdef COIN_DEVELOP
     1522          printf("no threads at code 0 \n");
     1523#endif
    15001524          // now check if any have just finished
    15011525          for (iThread=0;iThread<numberThreads_;iThread++) {
     
    15131537            threadInfo[iThread].returnCode=-1;
    15141538            threadStats[4]++;
     1539#ifdef COIN_DEVELOP
     1540            printf("thread %d code now -1\n",iThread);
     1541#endif
    15151542            continue;
    15161543          }
    15171544        }
     1545        if (!tree_->empty()) {
     1546#ifdef COIN_DEVELOP
     1547          printf("tree not empty!!!!!!\n");
     1548#endif
     1549          continue;
     1550        }
     1551        for (iThread=0;iThread<numberThreads_;iThread++) {
     1552          if (threadId[iThread]) {
     1553            if (threadInfo[iThread].returnCode!=-1) {
     1554              printf("bad end of tree\n");
     1555              abort();
     1556            }
     1557          }
     1558        }
     1559#ifdef COIN_DEVELOP
     1560        printf("finished ************\n");
     1561#endif
    15181562      }
    15191563      unlockThread();
     
    15811625      if (tree_->empty()) {
    15821626        unlockThread();
    1583         break; // finished
     1627        // For threads we need to check further
     1628        //break; // finished
     1629        continue;
    15841630      }
    15851631      unlockThread();
Note: See TracChangeset for help on using the changeset viewer.