这篇教程C++ GetProcessAffinityMask函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中GetProcessAffinityMask函数的典型用法代码示例。如果您正苦于以下问题:C++ GetProcessAffinityMask函数的具体用法?C++ GetProcessAffinityMask怎么用?C++ GetProcessAffinityMask使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了GetProcessAffinityMask函数的28个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: __int Master::Run(){ sLog.outString(" ___ _ _ ___ "); sLog.outString(" / _ // | |_ ___ _ __ (_) __ / __| ___ _ _ ___ "); sLog.outString(" / /_// // | _| / _ // | ' // | | / _| | (__ / _ // | '_| / -_)"); sLog.outString("/_/ //_// //__| //___/ |_|_|_| |_| //__| //___| //___/ |_| //___|"); sLog.outString(""); std::string pidfile = sConfig.GetStringDefault("PidFile", ""); if (!pidfile.empty()) { uint32 pid = CreatePIDFile(pidfile); if (!pid) { sLog.outError("Cannot create PID file %s./n", pidfile.c_str()); return 1; } sLog.outString("Daemon PID: %u/n", pid); } if (!_StartDB()) return 1; sWorld.SetInitialWorldSettings(); _HookSignals(); ACE_Based::Thread world_thread(new WorldRunnable); world_thread.setPriority(ACE_Based::Highest); std::string builds = AcceptableClientBuildsListStr(); LoginDatabase.escape_string(builds); LoginDatabase.PExecute("UPDATE realmlist SET flag = flag & ~(%u), population = 0, gamebuild = '%s' WHERE id = '%d'", REALM_FLAG_OFFLINE, builds.c_str(), realmID); ACE_Based::Thread* cliThread = NULL;#ifdef _WIN32 if (sConfig.GetBoolDefault("Console.Enable", true) && (m_ServiceStatus == -1))#else if (sConfig.GetBoolDefault("Console.Enable", true))#endif { cliThread = new ACE_Based::Thread(new CliRunnable); } ACE_Based::Thread rar_thread(new RARunnable); #ifdef _WIN32 { HANDLE hProcess = GetCurrentProcess(); uint32 Aff = sConfig.GetIntDefault("UseProcessors", 0); if (Aff > 0) { ULONG_PTR appAff; ULONG_PTR sysAff; if (GetProcessAffinityMask(hProcess,&appAff,&sysAff)) { ULONG_PTR curAff = Aff & appAff; if (!curAff) { sLog.outError("Processors marked in UseProcessors bitmask (hex) %x not accessible for OregonCore. Accessible processors bitmask (hex): %x",Aff,appAff); } else { if (SetProcessAffinityMask(hProcess,curAff)) sLog.outString("Using processors (bitmask, hex): %x", curAff); else sLog.outError("Can't set used processors (hex): %x",curAff); } } sLog.outString(); } bool Prio = sConfig.GetBoolDefault("ProcessPriority", false); if (Prio) { if (SetPriorityClass(hProcess,HIGH_PRIORITY_CLASS)) sLog.outString("OregonCore process priority class set to HIGH"); else sLog.outError("ERROR: Can't set OregonCore process priority class."); sLog.outString(); } } #endif ACE_Based::Thread* soap_thread = NULL; if (sConfig.GetBoolDefault("SOAP.Enabled", false)) { OCSoapRunnable* soapconnectector = new OCSoapRunnable(); soapconnectector->setListenArguments(sConfig.GetStringDefault("SOAP.IP", "127.0.0.1"), uint16(sConfig.GetIntDefault("SOAP.Port", 7878))); soap_thread = new ACE_Based::Thread(soapconnectector); } ACE_Based::Thread* freeze_thread = NULL; if (uint32 freeze_delay = sConfig.GetIntDefault("MaxCoreStuckTime", 0)) { FreezeDetectorRunnable *fdr = new FreezeDetectorRunnable(); fdr->SetDelayTime(freeze_delay*1000);//.........这里部分代码省略.........
开发者ID:Anonymus123,项目名称:AtomicCore-2.4.3,代码行数:101,
示例2: main//.........这里部分代码省略......... } // Launch the listening network socket RealmAcceptor acceptor; uint16 rmport = ConfigMgr::GetIntDefault("RealmServerPort", 3724); std::string bind_ip = ConfigMgr::GetStringDefault("BindIP", "0.0.0.0"); ACE_INET_Addr bind_addr(rmport, bind_ip.c_str()); if (acceptor.open(bind_addr, ACE_Reactor::instance(), ACE_NONBLOCK) == -1) { sLog->outError("Auth server can not bind to %s:%d", bind_ip.c_str(), rmport); return 1; } // Initialize the signal handlers AuthServerSignalHandler SignalINT, SignalTERM; // Register authservers's signal handlers ACE_Sig_Handler Handler; Handler.register_handler(SIGINT, &SignalINT); Handler.register_handler(SIGTERM, &SignalTERM); ///- Handle affinity for multiple processors and process priority on Windows#ifdef _WIN32 { HANDLE hProcess = GetCurrentProcess(); uint32 Aff = ConfigMgr::GetIntDefault("UseProcessors", 0); if (Aff > 0) { ULONG_PTR appAff; ULONG_PTR sysAff; if (GetProcessAffinityMask(hProcess, &appAff, &sysAff)) { ULONG_PTR curAff = Aff & appAff; // remove non accessible processors if (!curAff) sLog->outError("Processors marked in UseProcessors bitmask (hex) %x not accessible for authserver. Accessible processors bitmask (hex): %x", Aff, appAff); else if (SetProcessAffinityMask(hProcess, curAff)) sLog->outString("Using processors (bitmask, hex): %x", curAff); else sLog->outError("Can't set used processors (hex): %x", curAff); } sLog->outString(); } bool Prio = ConfigMgr::GetBoolDefault("ProcessPriority", false); if (Prio) { if (SetPriorityClass(hProcess, HIGH_PRIORITY_CLASS)) sLog->outString("The auth server process priority class has been set to HIGH"); else sLog->outError("Can't set auth server process priority class."); sLog->outString(); } }#endif // maximum counter for next ping uint32 numLoops = (ConfigMgr::GetIntDefault("MaxPingTime", 30) * (MINUTE * 1000000 / 100000)); uint32 loopCounter = 0; // possibly enable db logging; avoid massive startup spam by doing it here. if (sLog->GetLogDBLater()) { sLog->outString("Enabling database logging..."); sLog->SetLogDBLater(false); // login db needs thread for logging sLog->SetLogDB(true); } else sLog->SetLogDB(false); // Wait for termination signal while (!stopEvent) { // dont move this outside the loop, the reactor will modify it ACE_Time_Value interval(0, 100000); if (ACE_Reactor::instance()->run_reactor_event_loop(interval) == -1) break; if ((++loopCounter) == numLoops) { loopCounter = 0; sLog->outDetail("Ping MySQL to keep connection alive"); LoginDatabase.KeepAlive(); } } // Close the Database Pool and library StopDB(); sLog->outString("Halting process..."); return 0;}
开发者ID:Baeumchen,项目名称:SkyFireEMU,代码行数:101,
示例3: main//.........这里部分代码省略......... ACE_INET_Addr bind_addr(rmport, bind_ip.c_str()); if (acceptor.open(bind_addr, ACE_Reactor::instance(), ACE_NONBLOCK) == -1) { sLog->outError("ArkCORE Auth can not bind to %s:%d", bind_ip.c_str(), rmport); return 1; } // Initialise the signal handlers RealmdSignalHandler SignalINT, SignalTERM;#ifdef _WIN32 RealmdSignalHandler SignalBREAK;#endif /* _WIN32 */ // Register realmd's signal handlers ACE_Sig_Handler Handler; Handler.register_handler(SIGINT, &SignalINT); Handler.register_handler(SIGTERM, &SignalTERM);#ifdef _WIN32 Handler.register_handler(SIGBREAK, &SignalBREAK);#endif /* _WIN32 */ ///- Handle affinity for multiple processors and process priority on Windows#ifdef _WIN32 { HANDLE hProcess = GetCurrentProcess(); uint32 Aff = sConfig->GetIntDefault("UseProcessors", 0); if (Aff > 0) { ULONG_PTR appAff; ULONG_PTR sysAff; if (GetProcessAffinityMask(hProcess, &appAff, &sysAff)) { ULONG_PTR curAff = Aff & appAff; // remove non accessible processors if (!curAff) sLog->outError("Processors marked in UseProcessors bitmask (hex) %x not accessible for realmd. Accessible processors bitmask (hex): %x", Aff, appAff); else if (SetProcessAffinityMask(hProcess, curAff)) sLog->outString("Using processors (bitmask, hex): %x", curAff); else sLog->outError("Can't set used processors (hex): %x", curAff); } sLog->outString(); } bool Prio = sConfig->GetBoolDefault("ProcessPriority", false); if (Prio) { if (SetPriorityClass(hProcess, HIGH_PRIORITY_CLASS)) sLog->outString("ArkCORE Auth process priority class set to HIGH"); else sLog->outError("Can't set realmd process priority class."); sLog->outString(); } }#endif // maximum counter for next ping uint32 numLoops = (sConfig->GetIntDefault("MaxPingTime", 30) * (MINUTE * 1000000 / 100000)); uint32 loopCounter = 0; // possibly enable db logging; avoid massive startup spam by doing it here. if (sLog->GetLogDBLater())
开发者ID:Bootz,项目名称:DeepshjirRepack,代码行数:67,
示例4: CreatePIDFile/// Main functionint Master::Run(){ /// worldd PID file creation std::string pidfile = sConfig.GetStringDefault("PidFile", ""); if (!pidfile.empty()) { uint32 pid = CreatePIDFile(pidfile); if (!pid) { sLog.outError("Cannot create PID file %s./n", pidfile.c_str()); Log::WaitBeforeContinueIfNeed(); return 1; } sLog.outString("Daemon PID: %u/n", pid); } ///- Start the databases if (!_StartDB()) { Log::WaitBeforeContinueIfNeed(); return 1; } ///- Initialize the World sWorld.SetInitialWorldSettings();#ifndef WIN32 detachDaemon();#endif // server loaded successfully => enable async DB requests // this is done to forbid any async transactions during server startup! CharacterDatabase.AllowAsyncTransactions(); WorldDatabase.AllowAsyncTransactions(); LoginDatabase.AllowAsyncTransactions(); ///- Catch termination signals _HookSignals(); ///- Launch WorldRunnable thread ACE_Based::Thread world_thread(new WorldRunnable); world_thread.setPriority(ACE_Based::Highest); // set realmbuilds depend on worldserver expected builds, and set server online { std::string builds = AcceptableClientBuildsListStr(); LoginDatabase.escape_string(builds); LoginDatabase.DirectPExecute("UPDATE realmlist SET realmflags = realmflags & ~(%u), population = 0, realmbuilds = '%s' WHERE id = '%u'", REALM_FLAG_OFFLINE, builds.c_str(), realmID); } ACE_Based::Thread* cliThread = NULL;#ifdef WIN32 if (sConfig.GetBoolDefault("Console.Enable", true) && (m_ServiceStatus == -1)/* need disable console in service mode*/)#else if (sConfig.GetBoolDefault("Console.Enable", true))#endif { ///- Launch CliRunnable thread cliThread = new ACE_Based::Thread(new CliRunnable); } ACE_Based::Thread* rar_thread = NULL; if (sConfig.GetBoolDefault("Ra.Enable", false)) { rar_thread = new ACE_Based::Thread(new RARunnable); } ///- Handle affinity for multiple processors and process priority on Windows#ifdef WIN32 { HANDLE hProcess = GetCurrentProcess(); uint32 Aff = sConfig.GetIntDefault("UseProcessors", 0); if (Aff > 0) { ULONG_PTR appAff; ULONG_PTR sysAff; if (GetProcessAffinityMask(hProcess, &appAff, &sysAff)) { ULONG_PTR curAff = Aff & appAff; // remove non accessible processors if (!curAff) { sLog.outError("Processors marked in UseProcessors bitmask (hex) %x not accessible for worldserver. Accessible processors bitmask (hex): %x", Aff, appAff); } else { if (SetProcessAffinityMask(hProcess, curAff)) sLog.outString("Using processors (bitmask, hex): %x", curAff); else sLog.outError("Can't set used processors (hex): %x", curAff); } } sLog.outString(); } bool Prio = sConfig.GetBoolDefault("ProcessPriority", false);//.........这里部分代码省略.........
开发者ID:madbhr,项目名称:blizzlikecore,代码行数:101,
示例5: TC_LOG_INFO/// Main functionint Master::Run(){ OpenSSLCrypto::threadsSetup(); BigNumber seed1; seed1.SetRand(16 * 8); TC_LOG_INFO("server.worldserver", "%s (worldserver-daemon)", _FULLVERSION); TC_LOG_INFO("server.worldserver", "<Ctrl-C> to stop./n"); TC_LOG_INFO("server.worldserver", " ______ __"); TC_LOG_INFO("server.worldserver", "///__ _// __ __/// //__"); TC_LOG_INFO("server.worldserver", "///_/// /// _ __ ///_// ___ ///_// //, _// __ __"); TC_LOG_INFO("server.worldserver", " // // /////`'__///// // /' _ `///// // // /// /// ///// //"); TC_LOG_INFO("server.worldserver", " // // // // /// // // ///// ///// // // // // //_// // //_// //"); TC_LOG_INFO("server.worldserver", " // //_// //_// // //_// //_// //_// //_// //__/////`____ //"); TC_LOG_INFO("server.worldserver", " ///_////_/ ///_////_////_////_////__/ `/___/> //"); TC_LOG_INFO("server.worldserver", " C O R E ///___/"); TC_LOG_INFO("server.worldserver", "http://TrinityCore.org ///__//n"); /// worldserver PID file creation std::string pidFile = sConfigMgr->GetStringDefault("PidFile", ""); if (!pidFile.empty()) { if (uint32 pid = CreatePIDFile(pidFile)) TC_LOG_INFO("server.worldserver", "Daemon PID: %u/n", pid); else { TC_LOG_ERROR("server.worldserver", "Cannot create PID file %s./n", pidFile.c_str()); return 1; } } ///- Start the databases if (!_StartDB()) return 1; // set server offline (not connectable) LoginDatabase.DirectPExecute("UPDATE realmlist SET flag = (flag & ~%u) | %u WHERE id = '%d'", REALM_FLAG_OFFLINE, REALM_FLAG_INVALID, realmID); ///- Initialize the World sWorld->SetInitialWorldSettings(); ///- Initialize the signal handlers WorldServerSignalHandler signalINT, signalTERM; #ifdef _WIN32 WorldServerSignalHandler signalBREAK; #endif /* _WIN32 */ ///- Register worldserver's signal handlers ACE_Sig_Handler handle; handle.register_handler(SIGINT, &signalINT); handle.register_handler(SIGTERM, &signalTERM);#ifdef _WIN32 handle.register_handler(SIGBREAK, &signalBREAK);#endif ///- Launch WorldRunnable thread ACE_Based::Thread worldThread(new WorldRunnable); worldThread.setPriority(ACE_Based::Highest); ACE_Based::Thread* cliThread = NULL;#ifdef _WIN32 if (sConfigMgr->GetBoolDefault("Console.Enable", true) && (m_ServiceStatus == -1)/* need disable console in service mode*/)#else if (sConfigMgr->GetBoolDefault("Console.Enable", true))#endif { ///- Launch CliRunnable thread cliThread = new ACE_Based::Thread(new CliRunnable); } ACE_Based::Thread rarThread(new RARunnable);#if defined(_WIN32) || defined(__linux__) ///- Handle affinity for multiple processors and process priority uint32 affinity = sConfigMgr->GetIntDefault("UseProcessors", 0); bool highPriority = sConfigMgr->GetBoolDefault("ProcessPriority", false);#ifdef _WIN32 // Windows HANDLE hProcess = GetCurrentProcess(); if (affinity > 0) { ULONG_PTR appAff; ULONG_PTR sysAff; if (GetProcessAffinityMask(hProcess, &appAff, &sysAff)) { ULONG_PTR currentAffinity = affinity & appAff; // remove non accessible processors if (!currentAffinity) TC_LOG_ERROR("server.worldserver", "Processors marked in UseProcessors bitmask (hex) %x are not accessible for the worldserver. Accessible processors bitmask (hex): %x", affinity, appAff); else if (SetProcessAffinityMask(hProcess, currentAffinity)) TC_LOG_INFO("server.worldserver", "Using processors (bitmask, hex): %x", currentAffinity); else TC_LOG_ERROR("server.worldserver", "Can't set used processors (hex): %x", currentAffinity);//.........这里部分代码省略.........
开发者ID:BillytheOrc,项目名称:TrinityCore,代码行数:101,
示例6: main//.........这里部分代码省略......... LoginDatabase.Execute("UPDATE account_banned SET active = 0 WHERE unbandate<=UNIX_TIMESTAMP() AND unbandate<>bandate"); LoginDatabase.Execute("DELETE FROM ip_banned WHERE unbandate<=UNIX_TIMESTAMP() AND unbandate<>bandate"); LoginDatabase.CommitTransaction(); ///- Launch the listening network socket ACE_Acceptor<AuthSocket, ACE_SOCK_Acceptor> acceptor; uint16 rmport = sConfig.GetIntDefault("RealmServerPort", DEFAULT_REALMSERVER_PORT); std::string bind_ip = sConfig.GetStringDefault("BindIP", "0.0.0.0"); ACE_INET_Addr bind_addr(rmport, bind_ip.c_str()); if (acceptor.open(bind_addr, ACE_Reactor::instance(), ACE_NONBLOCK) == -1) { sLog.outError("MaNGOS realmd can not bind to %s:%d", bind_ip.c_str(), rmport); Log::WaitBeforeContinueIfNeed(); return 1; } ///- Catch termination signals HookSignals(); ///- Handle affinity for multiple processors and process priority on Windows#ifdef WIN32 { HANDLE hProcess = GetCurrentProcess(); uint32 Aff = sConfig.GetIntDefault("UseProcessors", 0); if (Aff > 0) { ULONG_PTR appAff; ULONG_PTR sysAff; if (GetProcessAffinityMask(hProcess, &appAff, &sysAff)) { ULONG_PTR curAff = Aff & appAff; // remove non accessible processors if (!curAff) { sLog.outError("Processors marked in UseProcessors bitmask (hex) %x not accessible for realmd. Accessible processors bitmask (hex): %x", Aff, appAff); } else { if (SetProcessAffinityMask(hProcess, curAff)) sLog.outString("Using processors (bitmask, hex): %x", curAff); else sLog.outError("Can't set used processors (hex): %x", curAff); } } sLog.outString(); } bool Prio = sConfig.GetBoolDefault("ProcessPriority", false); if (Prio) { if (SetPriorityClass(hProcess, HIGH_PRIORITY_CLASS)) sLog.outString("realmd process priority class set to HIGH"); else sLog.outError("Can't set realmd process priority class."); sLog.outString(); } }#endif // server has started up successfully => enable async DB requests
开发者ID:Ariathies,项目名称:server,代码行数:67,
示例7: definedRakNetTimeUS RakNet::GetTimeNS( void ){#if defined(_PS3) || defined(__PS3__) || defined(SN_TARGET_PS3) uint64_t curTime; if ( initialized == false) { ticksPerSecond = _PS3_GetTicksPerSecond(); // Use the function to get elapsed ticks, this is a macro. _PS3_GetElapsedTicks(curTime); uint64_t quotient, remainder; quotient=(curTime / ticksPerSecond); remainder=(curTime % ticksPerSecond); initialTime = (RakNetTimeUS) quotient*(RakNetTimeUS)1000000 + (remainder*(RakNetTimeUS)1000000 / ticksPerSecond); initialized = true; }#elif defined(_WIN32) // Win32 if ( initialized == false) { initialized = true;#if !defined(_WIN32_WCE) && !defined(_XBOX) && !defined(X360) // Save the current process HANDLE mProc = GetCurrentProcess(); // Get the current Affinity#if _MSC_VER >= 1400 && defined (_M_X64) GetProcessAffinityMask(mProc, (PDWORD_PTR)&mProcMask, (PDWORD_PTR)&mSysMask);#else GetProcessAffinityMask(mProc, &mProcMask, &mSysMask);#endif mThread = GetCurrentThread();#endif // !defined(_WIN32_WCE) QueryPerformanceFrequency( &yo ); } // 01/12/08 - According to the docs "The frequency cannot change while the system is running." so this shouldn't be necessary /* if (++queryCount==200) { // Set affinity to the first core SetThreadAffinityMask(mThread, 1); QueryPerformanceFrequency( &yo ); // Reset affinity SetThreadAffinityMask(mThread, mProcMask); queryCount=0; } */#elif (defined(__GNUC__) || defined(__GCCXML__)) if ( initialized == false) { gettimeofday( &tp, 0 ); initialized=true; // I do this because otherwise RakNetTime in milliseconds won't work as it will underflow when dividing by 1000 to do the conversion initialTime = ( tp.tv_sec ) * (RakNetTimeUS) 1000000 + ( tp.tv_usec ); }#endif#if defined(_PS3) || defined(__PS3__) || defined(SN_TARGET_PS3) // Use the function to get elapsed ticks, this is a macro. _PS3_GetElapsedTicks(curTime); uint64_t quotient, remainder; quotient=(curTime / ticksPerSecond); remainder=(curTime % ticksPerSecond); curTime = (RakNetTimeUS) quotient*(RakNetTimeUS)1000000 + (remainder*(RakNetTimeUS)1000000 / ticksPerSecond); // Subtract from initialTime so the millisecond conversion does not underflow return curTime - initialTime;#elif defined(_WIN32) RakNetTimeUS curTime; static RakNetTimeUS lastQueryVal=(RakNetTimeUS)0;// static unsigned long lastTickCountVal = GetTickCount(); LARGE_INTEGER PerfVal;#if !defined(_WIN32_WCE) && !defined(_XBOX) && !defined(X360) // Set affinity to the first core SetThreadAffinityMask(mThread, 1);#endif // !defined(_WIN32_WCE) // Docs: On a multiprocessor computer, it should not matter which processor is called. // However, you can get different results on different processors due to bugs in the basic input/output system (BIOS) or the hardware abstraction layer (HAL). To specify processor affinity for a thread, use the SetThreadAffinityMask function. // Query the timer QueryPerformanceCounter( &PerfVal );#if !defined(_WIN32_WCE) && !defined(_XBOX) && !defined(X360) // Reset affinity SetThreadAffinityMask(mThread, mProcMask);#endif // !defined(_WIN32_WCE) __int64 quotient, remainder; quotient=((PerfVal.QuadPart) / yo.QuadPart); remainder=((PerfVal.QuadPart) % yo.QuadPart); curTime = (RakNetTimeUS) quotient*(RakNetTimeUS)1000000 + (remainder*(RakNetTimeUS)1000000 / yo.QuadPart);//.........这里部分代码省略.........
开发者ID:venkatarajasekhar,项目名称:viper,代码行数:101,
示例8: windows_init_clockstatic bool windows_init_clock(struct libusb_context *ctx){ DWORD_PTR affinity, dummy; HANDLE event = NULL; LARGE_INTEGER li_frequency; int i; if (QueryPerformanceFrequency(&li_frequency)) { // Load DLL imports if (windows_init_dlls() != LIBUSB_SUCCESS) { usbi_err(ctx, "could not resolve DLL functions"); return false; } // The hires frequency can go as high as 4 GHz, so we'll use a conversion // to picoseconds to compute the tv_nsecs part in clock_gettime hires_frequency = li_frequency.QuadPart; hires_ticks_to_ps = UINT64_C(1000000000000) / hires_frequency; usbi_dbg("hires timer available (Frequency: %"PRIu64" Hz)", hires_frequency); // Because QueryPerformanceCounter might report different values when // running on different cores, we create a separate thread for the timer // calls, which we glue to the first available core always to prevent timing discrepancies. if (!GetProcessAffinityMask(GetCurrentProcess(), &affinity, &dummy) || (affinity == 0)) { usbi_err(ctx, "could not get process affinity: %s", windows_error_str(0)); return false; } // The process affinity mask is a bitmask where each set bit represents a core on // which this process is allowed to run, so we find the first set bit for (i = 0; !(affinity & (DWORD_PTR)(1 << i)); i++); affinity = (DWORD_PTR)(1 << i); usbi_dbg("timer thread will run on core #%d", i); event = CreateEvent(NULL, FALSE, FALSE, NULL); if (event == NULL) { usbi_err(ctx, "could not create event: %s", windows_error_str(0)); return false; } timer_thread = (HANDLE)_beginthreadex(NULL, 0, windows_clock_gettime_threaded, (void *)event, 0, (unsigned int *)&timer_thread_id); if (timer_thread == NULL) { usbi_err(ctx, "unable to create timer thread - aborting"); CloseHandle(event); return false; } if (!SetThreadAffinityMask(timer_thread, affinity)) usbi_warn(ctx, "unable to set timer thread affinity, timer discrepancies may arise"); // Wait for timer thread to init before continuing. if (WaitForSingleObject(event, INFINITE) != WAIT_OBJECT_0) { usbi_err(ctx, "failed to wait for timer thread to become ready - aborting"); CloseHandle(event); return false; } CloseHandle(event); } else { usbi_dbg("no hires timer available on this platform"); hires_frequency = 0; hires_ticks_to_ps = UINT64_C(0); } return true;}
开发者ID:Chadizzm,项目名称:libusb,代码行数:68,
示例9: main//.........这里部分代码省略......... { sLog.outError("No valid realms specified."); Log::WaitBeforeContinueIfNeed(); return 1; } // cleanup query // set expired bans to inactive LoginDatabase.BeginTransaction(); LoginDatabase.Execute("UPDATE account_banned SET active = 0 WHERE unbandate<=UNIX_TIMESTAMP() AND unbandate<>bandate"); LoginDatabase.Execute("DELETE FROM ip_banned WHERE unbandate<=UNIX_TIMESTAMP() AND unbandate<>bandate"); LoginDatabase.CommitTransaction(); auto rmport = sConfig.GetIntDefault("RealmServerPort", DEFAULT_REALMSERVER_PORT); std::string bind_ip = sConfig.GetStringDefault("BindIP", "0.0.0.0"); // FIXME - more intelligent selection of thread count is needed here. config option? MaNGOS::Listener<AuthSocket> listener(rmport, 1); ///- Catch termination signals HookSignals(); ///- Handle affinity for multiple processors and process priority on Windows#ifdef _WIN32 { HANDLE hProcess = GetCurrentProcess(); uint32 Aff = sConfig.GetIntDefault("UseProcessors", 0); if (Aff > 0) { ULONG_PTR appAff; ULONG_PTR sysAff; if (GetProcessAffinityMask(hProcess, &appAff, &sysAff)) { ULONG_PTR curAff = Aff & appAff; // remove non accessible processors if (!curAff) { sLog.outError("Processors marked in UseProcessors bitmask (hex) %x not accessible for realmd. Accessible processors bitmask (hex): %x", Aff, appAff); } else { if (SetProcessAffinityMask(hProcess, curAff)) sLog.outString("Using processors (bitmask, hex): %x", curAff); else sLog.outError("Can't set used processors (hex): %x", curAff); } } sLog.outString(); } bool Prio = sConfig.GetBoolDefault("ProcessPriority", false); if (Prio) { if (SetPriorityClass(hProcess, HIGH_PRIORITY_CLASS)) sLog.outString("realmd process priority class set to HIGH"); else sLog.outError("Can't set realmd process priority class."); sLog.outString(); } }#endif // server has started up successfully => enable async DB requests
开发者ID:krullgor,项目名称:mangos-tbc,代码行数:67,
示例10: sysVisibleConsole int WindowProfiler::run ( const std::string& title, int argc, const char** argv, int width, int height, int Major, int Minor ) { s_project = this; sysVisibleConsole();#if _WIN32 if (m_singleThreaded) { HANDLE proc = GetCurrentProcess(); size_t procmask; size_t sysmask; // pin to one physical cpu for smoother timings, disable hyperthreading GetProcessAffinityMask(proc,(PDWORD_PTR)&procmask,(PDWORD_PTR)&sysmask); if (sysmask & 8){ // quadcore, use last core procmask = 8; } else if (sysmask & 2){ // dualcore, use last core procmask = 2; } SetProcessAffinityMask(proc,(DWORD_PTR)procmask); }#endif bool vsyncstate = true; unsigned int intervalSeconds = 2; unsigned int frameLimit = 0; unsigned int timerLimit = 0; const char* dumpatexit = NULL; for (int i = 0; i < argc; i++){ if (strcmp(argv[i],"-winsize") == 0 && i + 2 < argc){ width = atoi(argv[i+1]); height = atoi(argv[i+2]); i+=2; } if (strcmp(argv[i],"-vsync") == 0 && i + 1 < argc){ vsyncstate = atoi(argv[i+1]) ? true : false; i+=1; } if (strcmp(argv[i],"-frames")==0 && i+1<argc){ frameLimit = atoi(argv[i+1]); i++; } if (strcmp(argv[i],"-timerprints")==0 && i+1<argc){ timerLimit = atoi(argv[i+1]); i++; } if (strcmp(argv[i],"-timerinterval")==0 && i+1<argc){ intervalSeconds = atoi(argv[i+1]); i++; } if (strcmp(argv[i],"-bmpatexit")==0 && i+1<argc){ dumpatexit = argv[i+1]; i++; } } ContextFlags flags; flags.major = Major; flags.minor = Minor; flags.robust = 0; flags.core = 0;#ifdef NDEBUG flags.debug = 0;#else flags.debug = 1;#endif flags.share = NULL; if (!activate(width,height,title.c_str(), &flags)){ printf("Could not create GL context: %d.%d/n",flags.major,flags.minor); return EXIT_FAILURE; } vsync( vsyncstate ); m_window.m_viewsize[0] = width; m_window.m_viewsize[1] = height; m_profiler.init(); m_gltimers.init(m_profiler.getRequiredTimers()); m_profiler.setDefaultGPUInterface(&m_gltimers); bool Run = begin(); m_active = true; double timeStart = sysGetTime(); double timeBegin = sysGetTime(); double frames = 0; bool lastVsync = m_vsync;//.........这里部分代码省略.........
开发者ID:drewet,项目名称:shared_sources,代码行数:101,
示例11: mainvoid main(int argc, char *argv[]){ clock_t startCPU; time_t startTime; double elapsedTime, cpuTime; uint64_t clock_reg; int pf0 = getPagefault(); #ifdef SMARTHEAP MemRegisterTask();#endif setbuf(stdout, NULL); /* turn off buffering for output */ if (argc > 1) fin = fopen(argv[1], "r"); else fin = stdin; if (argc > 2) fout = fopen(argv[2], "w"); else fout = stdout; if(fin == NULL || fout == NULL) { fprintf(stderr, "Could not open file(s): "); int i=1; for(i=1; i<argc;i++) { fprintf(stderr, "%s ", argv[i]); } fprintf(stderr, "/n"); exit(-1); } ulCallCount = promptAndRead("call count", ulCallCount, 'u'); uMinBlockSize = (unsigned)promptAndRead("min block size",uMinBlockSize,'u'); uMaxBlockSize = (unsigned)promptAndRead("max block size",uMaxBlockSize,'u');#ifdef HEAPALLOC_WRAPPER LoadLibrary("shsmpsys.dll");#endif#ifdef SYS_MULTI_THREAD { unsigned i; void *threadArg = NULL; ThreadID *tids;#ifdef WIN32 //unsigned uCPUs = promptAndRead("CPUs (0 for all)", 0, 'u'); if (uCPUs) { DWORD m1, m2; if (GetProcessAffinityMask(GetCurrentProcess(), &m1, &m2)) { i = 0; m1 = 1; /* * iterate through process affinity mask m2, counting CPUs up to * the limit specified in uCPUs */ do if (m2 & m1) i++; while ((m1 <<= 1) && i < uCPUs); /* clear any extra CPUs in affinity mask */ do if (m2 & m1) m2 &= ~m1; while (m1 <<= 1); if (SetProcessAffinityMask(GetCurrentProcess(), m2)) fprintf(fout, "/nThreads in benchmark will run on max of %u CPUs", i); } }#endif /* WIN32 */ uThreadCount = uCPUs;//(int)promptAndRead("threads", GetNumProcessors(), 'u'); if (uThreadCount < 1) uThreadCount = 1; ulCallCount /= uThreadCount; if ((tids = malloc(sizeof(ThreadID) * uThreadCount)) != NULL) { startCPU = clock(); startTime = time(NULL); clock_reg = rdtsc(); UPDATENETMEM(mallinfo().uordblks + ulCallCount * sizeof(void *)); for (i = 0; i < uThreadCount; i++) { if (THREAD_EQ(tids[i] = RunThread(doBench, threadArg),THREAD_NULL)) { fprintf(fout, "/nfailed to start thread #%d", i); break; }//.........这里部分代码省略.........
开发者ID:cksystemsgroup,项目名称:libscm,代码行数:101,
示例12: SpecialEcsAccess//// Performs special Extended Configuration Space access.//// It takes advantage of AMD-specific IO CF8h/CFCh extension that enables// accesses to PCI Extended Configuration Space. Access is realized by// enabling ECS access via IOCF8/IOCFC using EnableCf8ExtCfg from NB_CFG// MSR (MSRC001_001F) and performing CF8h/CFCh access per specifciation.// State of NB_CFG and IOCF8 is saved before the operation and gets// restored afterwards. Calling process is also bound to first CPU// in the system for the duration of the operation to accommodate// environments with multiple northbridges.// // EnableCf8ExtCfg is supported by all currently supported CPU families,// that is, 10h, 11h, 12h, 14h, 15h and 16h.//// IO CF8h/CFCh method, while racy, is the only feasible method to access// PCI ECS on Windows XP/2003 (accessing memory mapped configuration space// is off the table due to lack of physical memory access support// in WinRing0).//// Best effort is put to detect simultaneous users of CF8h/CFCh.//bool SpecialEcsAccess(bool write, DWORD devfunc, DWORD reg, DWORD *res){ DWORD_PTR mask_save; DWORD_PTR dummy; DWORD eax_save; DWORD edx_save; DWORD edx; DWORD addr; DWORD addr_save; DWORD addr_check; DWORD data; bool result = false; if (!GetProcessAffinityMask((HANDLE)-1, &mask_save, &dummy)) { fprintf(stderr, "ERROR getting affinity mask/n"); goto out; } if (!SetProcessAffinityMask((HANDLE)-1, 1)) { fprintf(stderr, "ERROR setting affinity mask/n"); goto out; } if (!RdmsrPx(0xC001001F, &eax_save, &edx_save, 1)) { fprintf(stderr, "ERROR reading NB_CFG/n"); goto out_affinity; } edx = edx_save; edx |= 0x4000; if (!WrmsrPx(0xC001001F, eax_save, edx, (DWORD_PTR)1)) { fprintf(stderr, "ERROR writing NB_CFG/n"); goto out_affinity; } addr_save = ReadIoPortDword(0xcf8); addr = 1; addr <<= 7; addr |= (reg >> 8) & 0x0F; addr <<= 16; addr |= devfunc & 0xFFFF; addr <<= 8; addr |= reg & 0xFF; WriteIoPortDword(0xcf8, addr); if (write == false) { data = ReadIoPortDword(0xcfc); } else { WriteIoPortDword(0xcfc, *res); } addr_check = ReadIoPortDword(0xcf8); if (addr_check != addr) { fprintf(stderr, "ERROR: IO CF8h hijacked!/n"); goto out_nbcfg; } WriteIoPortDword(0xcf8, addr_save); if (write == false) { *res = data; } result = true;out_nbcfg: WrmsrPx(0xC001001F, eax_save, edx_save, (DWORD_PTR)1);out_affinity: SetProcessAffinityMask((HANDLE)-1, mask_save);out: return result;}
开发者ID:kszysiu,项目名称:turionpowercontrol-archive-20150824,代码行数:84,
示例13: main//.........这里部分代码省略......... ACE_INET_Addr bind_addr(rmport, bind_ip.c_str()); if (acceptor.open(bind_addr, ACE_Reactor::instance(), ACE_NONBLOCK) == -1) { sLog->outError("StarGateAuth nicht zu binden %s:%d", bind_ip.c_str(), rmport); return 1; } // Initialise the signal handlers RealmdSignalHandler SignalINT, SignalTERM;#ifdef _WIN32 RealmdSignalHandler SignalBREAK;#endif /* _WIN32 */ // Register realmd's signal handlers ACE_Sig_Handler Handler; Handler.register_handler(SIGINT, &SignalINT); Handler.register_handler(SIGTERM, &SignalTERM);#ifdef _WIN32 Handler.register_handler(SIGBREAK, &SignalBREAK);#endif /* _WIN32 */ ///- Handle affinity for multiple processors and process priority on Windows#ifdef _WIN32 { HANDLE hProcess = GetCurrentProcess(); uint32 Aff = sConfig->GetIntDefault("UseProcessors", 0); if (Aff > 0) { ULONG_PTR appAff; ULONG_PTR sysAff; if (GetProcessAffinityMask(hProcess, &appAff, &sysAff)) { ULONG_PTR curAff = Aff & appAff; // remove non accessible processors if (!curAff) sLog->outError("Prozessoren in UseProcessors Bitmaske markiert (hex) %x nicht zug C++ GetProcessId函数代码示例 C++ GetProcPtr函数代码示例
|