| Цитата(boostcoder @ 26.8.2010, 12:00) | REZiaMIX, ты бы еще код показал, и тебе бы цены небыло  |
| Код | timers::msTimer timer; unsigned long mcount = 2000000; std::vector <criticalSection *> sections;
printf("Count: %i\n",mcount);
timer.timer(); for(size_t i=0;i!= mcount;++i) sections.push_back(new criticalSection); unsigned long time_create = timer.getValue(); float permutex = float(time_create) / float(mcount); printf("All mutexes created in %d ms; %f ms per mutex\n",time_create,permutex);
timer.timer(); for(size_t i=0;i!= mcount;++i) sections[i]->enter(); unsigned long time_lock = timer.getValue(); permutex = float(time_lock) / float(mcount); printf("All mutexes locked in %d ms; %f ms per mutex\n",time_lock,permutex);
timer.timer(); for(size_t i=0;i!= mcount;++i) sections[i]->leave(); unsigned long time_unlock = timer.getValue(); permutex = float(time_unlock) / (mcount); printf("All mutexes unlocked in %d ms; %f ms per mutex\n",time_unlock,permutex);
|
Где criticalSection:
| Код | criticalSection::criticalSection() { if(pthread_mutex_init(&myMutex, NULL) != 0) printf("Mutex creating error!\n"); } criticalSection::~criticalSection() { pthread_mutex_destroy(&myMutex); } void criticalSection::enter() { pthread_mutex_lock(&myMutex); } void criticalSection::leave() { pthread_mutex_unlock(&myMutex); }
|
|