Re: Threads
Lamefif wrote:
On Oct 3, 6:23 pm, "Mark Salsbery [MVP]"
<MarkSalsbery[MVP]@newsgroup.nospam> wrote:
Are you trying to do something like this?
HANDLE hTimerEvent = NULL;
...
hTimerEvent = ::CreateEvent(NULL, FALSE, FALSE, NULL);
Thread1 = CreateThread(NULL,0,Thread1EventProc,NULL,
0,&mThreadId); // mThreadId set to 1212
...
unsigned long __stdcall Thread1EventProc(LPVOID param)
{
...
::WaitForSingleObject(hTimerEvent, INFINITE);
...
}
...
case WM_TIMER:
...
::SetEvent(hTimerEvent);
...
Hey Mark :) .. yes thanks .. all
This code will work as intended most of the time, but what happens when
for some reason SetEvent is called twice without WFSO catching the first
event? Even if the work in Thread1EventProc is shorter from timer period
there's no guarantee that "event miss" wont happen.
If you just want the thread job to do something occasionally then all
this above is irrelevant (but then you could use Sleep instead of WFSO
in thread), but if working thread needs to respond to some request from
main thread then further logic is needed (involving some counter, or
array of requests, with critical section to guard it).