คำถามติดแท็ก timer

ตัวจับเวลาเป็นส่วนประกอบที่มีฟังก์ชันในการทริกเกอร์การดำเนินการที่ผู้ใช้กำหนดในช่วงเวลาปกติตามที่กำหนดโดยผู้ใช้


5
ความแตกต่างระหว่าง std :: system_clock และ std :: steady_clock?
อะไรคือความแตกต่างระหว่างstd::system_clockและstd::steady_clock? (กรณีตัวอย่างที่แสดงผลลัพธ์ / พฤติกรรมที่แตกต่างกันจะดีมาก) ถ้าเป้าหมายของฉันคือการได้อย่างแม่นยำวัดเวลาการดำเนินการของฟังก์ชั่น (เช่นมาตรฐาน) สิ่งที่จะเป็นทางเลือกที่ดีที่สุดระหว่างstd::system_clock, std::steady_clockและstd::high_resolution_clock?
98 c++  c++11  timer  chrono 

4
วิธีใช้ QueryPerformanceCounter
เมื่อเร็ว ๆ นี้ฉันตัดสินใจว่าฉันจำเป็นต้องเปลี่ยนจากการใช้มิลลิวินาทีเป็นไมโครวินาทีสำหรับคลาส Timer ของฉันและหลังจากการวิจัยบางอย่างฉันตัดสินใจว่า QueryPerformanceCounter น่าจะเป็นทางออกที่ปลอดภัยที่สุดของฉัน (คำเตือนBoost::Posixว่าอาจไม่ทำงานบน Win32 API ทำให้ฉันผิดหวังเล็กน้อย) อย่างไรก็ตามฉันไม่แน่ใจว่าจะใช้งานอย่างไร สิ่งที่ฉันกำลังทำคือเรียกGetTicks()ใช้ฟังก์ชัน esque ใด ๆ ที่ฉันใช้และกำหนดให้กับstartingTicksตัวแปรของตัวจับเวลา จากนั้นเพื่อหาระยะเวลาที่ผ่านไปฉันเพิ่งลบค่าส่งคืนของฟังก์ชันออกจากค่าstartingTicksและเมื่อฉันรีเซ็ตตัวจับเวลาฉันก็เรียกฟังก์ชันอีกครั้งและกำหนดค่าเริ่มต้นให้กับมัน น่าเสียดายที่จากรหัสที่ฉันเห็นมันไม่ง่ายเหมือนแค่การโทรQueryPerformanceCounter()และฉันไม่แน่ใจว่าฉันควรจะส่งผ่านอะไรไปเป็นข้อโต้แย้งของมัน
97 c++  windows  timer 

10
gettimeofday () รับประกันความละเอียดระดับไมโครวินาทีหรือไม่
ฉันกำลังพอร์ตเกมซึ่งเดิมเขียนขึ้นสำหรับ Win32 API ไปยัง Linux (ดีคือพอร์ต OS X ของพอร์ต Win32 ไปยัง Linux) ฉันได้ดำเนินการQueryPerformanceCounterโดยให้ uSeconds ตั้งแต่เริ่มกระบวนการ: BOOL QueryPerformanceCounter(LARGE_INTEGER* performanceCount) { gettimeofday(&currentTimeVal, 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ตั้งแต่เริ่มต้นโปรแกรม ดังนั้นนี้เป็นแบบพกพา? ฉันไม่ต้องการที่จะค้นพบว่ามันทำงานแตกต่างออกไปหากเคอร์เนลถูกคอมไพล์ด้วยวิธีใดวิธีหนึ่งหรืออะไรทำนองนั้น อย่างไรก็ตามฉันสบายดีที่ไม่สามารถพกพาไปยังสิ่งอื่นที่ไม่ใช่ Linux ได้

4
จะรับระยะเวลาเป็น int มิลลิวินาทีและลอยวินาทีจาก <chrono> ได้อย่างไร
ฉันพยายามใช้ chrono library สำหรับตัวจับเวลาและระยะเวลา ฉันต้องการที่จะมีDuration frameStart;(ตั้งแต่เริ่มต้นแอป) และDuration frameDelta;(เวลาระหว่างเฟรม) ฉันต้องสามารถรับframeDeltaระยะเวลาเป็นมิลลิวินาทีและวินาทีลอยได้ คุณทำสิ่งนี้กับ&lt;chrono&gt;ไลบรารีc ++ 11 ใหม่ได้อย่างไร ฉันทำงานกับมันและ googling (ข้อมูลกระจัดกระจาย) โค้ดได้รับการเทมเพลนอย่างมากและต้องใช้การร่ายและสิ่งต่างๆเป็นพิเศษฉันไม่สามารถหาวิธีใช้ไลบรารีนี้ได้อย่างถูกต้อง
94 c++  c++11  timer  chrono 

5
วิธีหยุดงานที่กำหนดเวลาไว้ในคลาส java.util.Timer
ฉันกำลังใช้java.util.Timerคลาสและฉันกำลังใช้วิธีกำหนดเวลาเพื่อทำงานบางอย่าง แต่หลังจากดำเนินการไป 6 ครั้งฉันต้องหยุดงานของมัน ฉันควรทำอย่างไร?
93 java  timer 

3
วิธีที่เหมาะสมในการดำเนินงานที่ไม่มีวันสิ้นสุด (ตัวจับเวลาเทียบกับงาน)
ดังนั้นแอปของฉันจำเป็นต้องดำเนินการเกือบจะต่อเนื่อง (โดยหยุดชั่วคราวประมาณ 10 วินาทีระหว่างการรันแต่ละครั้ง) ตราบเท่าที่แอปกำลังทำงานอยู่หรือมีการร้องขอการยกเลิก งานที่ต้องทำมีความเป็นไปได้ที่จะใช้เวลาถึง 30 วินาที จะดีกว่าไหมหากใช้ System.Timers.Timer และใช้ AutoReset เพื่อให้แน่ใจว่าจะไม่ดำเนินการก่อนที่ "ติ๊ก" ก่อนหน้าจะเสร็จสิ้น หรือฉันควรใช้งานทั่วไปในโหมด LongRunning ที่มีโทเค็นการยกเลิกและมีปกติไม่มีที่สิ้นสุดในขณะที่วนซ้ำอยู่ภายในเรียกการดำเนินการที่ทำงานกับเธรด 10 วินาทีนอนหลับระหว่างการโทร? สำหรับโมเดล async / await ฉันไม่แน่ใจว่ามันจะเหมาะสมที่นี่เพราะฉันไม่มีค่าตอบแทนจากการทำงาน CancellationTokenSource wtoken; Task task; void StopWork() { wtoken.Cancel(); try { task.Wait(); } catch(AggregateException) { } } void StartWork() { wtoken = new CancellationTokenSource(); task = …

7
มีการแทนที่ตามงานสำหรับ System.Threading.Timer หรือไม่
ฉันเพิ่งเริ่มใช้ Tasks ของ. Net 4.0 และฉันไม่พบสิ่งที่คิดว่าจะเป็นการแทนที่งานตามงานหรือการใช้งานตัวจับเวลาเช่นงานตามระยะเวลา มีอย่างนั้นหรือ? อัปเดต สิ่งที่ฉันคิดว่าเป็นวิธีแก้ปัญหาตามความต้องการของฉันซึ่งก็คือการรวมฟังก์ชัน "Timer" ไว้ในงานที่มี Tasks ย่อยโดยใช้ประโยชน์จาก Can CancelToken และส่งคืนงานเพื่อให้สามารถเข้าร่วมในขั้นตอนงานต่อไปได้ public static Task StartPeriodicTask(Action action, int intervalInMilliseconds, int delayInMilliseconds, CancellationToken cancelToken) { Action wrapperAction = () =&gt; { if (cancelToken.IsCancellationRequested) { return; } action(); }; Action mainAction = () =&gt; { TaskCreationOptions attachedToParent = …

6
จะเข้าถึงเมธอด HttpServerUtility.MapPath ใน Thread หรือ Timer ได้อย่างไร?
ฉันใช้System.Timers.Timerแอปพลิเคชัน Asp.Net ของฉันและฉันจำเป็นต้องใช้HttpServerUtility.MapPathวิธีการที่ดูเหมือนว่าจะใช้ได้ผ่านทางHttpContext.Current.Server.MapPathไฟล์. ปัญหาคือว่าHttpContext.Currentคือnullเมื่อTimer.Elapsedเหตุการณ์ fires มีวิธีอื่นในการอ้างอิงถึงวัตถุ HttpServerUtility หรือไม่? ฉันสามารถฉีดเข้าไปในคอนสตรัคเตอร์ของชั้นเรียนได้ ปลอดภัยหรือไม่? ฉันจะแน่ใจได้อย่างไรว่าจะไม่ถูกเก็บรวบรวมขยะในตอนท้ายของคำขอปัจจุบัน ขอบคุณ!
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.