मैं एक गेम पोर्ट कर रहा हूं, जो मूल रूप से लिनक्स के लिए Win32 एपीआई के लिए लिखा गया था (अच्छी तरह से, लिनक्स के लिए Win32 पोर्ट के ओएस एक्स पोर्ट को पोर्ट करना)।
मैंने QueryPerformanceCounter
प्रक्रिया शुरू होने के बाद से यूस्कॉन्ड देकर लागू किया है:
BOOL QueryPerformanceCounter(LARGE_INTEGER* performanceCount)
{
gettimeofday(¤tTimeVal, NULL);
performanceCount->QuadPart = (currentTimeVal.tv_sec - startTimeVal.tv_sec);
performanceCount->QuadPart *= (1000 * 1000);
performanceCount->QuadPart += (currentTimeVal.tv_usec - startTimeVal.tv_usec);
return true;
}
यह, QueryPerformanceFrequency()
आवृत्ति के रूप में एक निरंतर 1000000 देने के साथ युग्मित , मेरी मशीन पर अच्छी तरह से काम करता है , मुझे 64-बिट चर देता है जिसमें uSeconds
प्रोग्राम के स्टार्ट-अप के बाद से शामिल है ।
तो क्या यह पोर्टेबल है? अगर कर्नेल को एक निश्चित तरीके से संकलित किया गया था या ऐसा कुछ भी किया गया था, तो मैं इसे अलग तरह से काम करना नहीं चाहता। हालाँकि, मैं लिनक्स के अलावा किसी अन्य चीज़ के लिए गैर-पोर्टेबल होने के साथ ठीक हूँ।