1.I have some infinite loops how can I get the lowest cpu consumption? Should I use a delay?
2.If I have multiple threads running in my application and one of them is THREAD_PRIORITY_IDLE does it affect other threads?
My code is as this for every thread
procedure TMatchLanLon.Execute;
begin
while not Terminated do
begin
//some code
Sleep(1000);
end;
end;
Typically a thread should sleep until signalled, but not using
SleeporSleepEx.You create an Event and Wait for it to be signalled,either using TEvent or direct to Win32 API with WaitForSingleObject.
Sleepcauses so many problems, including what I call “Sleeping beauty” disease. THe whole rest of your application has terminated and shut down a few hundred microseconds ago, and your thread has slept for a “million years” in relative computer timing terms, and when it wakes up the rest of your application has long since terminated. The next thing your background thread is likely to do is access some object which it has a reference to, which was frozen, and then (if you’re lucky) it will crash. Don’t useSleepin threads. Wait for events, or use some pre-built worker thread (like the OmniThreadLibrary one).