| | |
| | | while (!mterminate.load()) { |
| | | std::this_thread::sleep_for(std::chrono::seconds(this->keepTime * 2)); |
| | | //sleep(this->keepTime); |
| | | for(iter = statusMap.begin(); iter != statusMap.end(); iter++) { |
| | | for(iter = statusMap.begin(); iter != statusMap.end();) { |
| | | |
| | | status = iter->second; |
| | | if (status != nullptr) { |
| | | // cout<< "iter " << iter->first <<' '<< iter->second << status->lastTime << endl; |
| | | // printf("%ld, %ld, %ld\n", time(NULL), status->lastTime, (time(0) - status->lastTime)); |
| | | if((time(NULL) - status->lastTime) > this->keepTime) { |
| | | if(difftime(time(NULL), status->lastTime) > this->keepTime * 2) { |
| | | std::cout << status->id << "脱离监控区, remove from map\n"; |
| | | delete status; |
| | | statusMap.erase(iter); |
| | | } |
| | | |
| | | iter = statusMap.erase(iter); |
| | | continue; |
| | | } |
| | | } |
| | | iter++; |
| | | } |
| | | } |
| | | |