|
Ahh, thanks
|
|
|
|
|
The error is during Run time
The pointer to the thread "pThread" suddenly changes value to zero on going through InitInstance() function.
Even if i don't create a window derived from CFrameWnd it is generating the error.
The Window derived from CFrameWnd is created but the error is also generated at run time.
|
|
|
|
|
The exception occurs at
if(!pThread->InitInstance){.............} of predefined winmain.cpp
Error occurs in that if statement
The pThread value changes to zero for some reason.
|
|
|
|
|
Your code as shown works fine for me.
Where are you calling AfxBeginThread() from?
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Sorry for the late reply.Iam calling AfxBeginThread globally.that is iam not calling inside any function or class Iam calling where they usually create the objects of the class
|
|
|
|
|
How? Can you show how you do that?
If you put a breakpoint on the call, is it getting hit?
You may get better results if you call it from the InitInstance() override
of your CWinApp class - before that, MFC may not be initialized yet.
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Iam not using CWinApp class
Iam using only CWinThread class
I have to instantiate the application using AfxBeginThread
So InitInstance() won't be called unless I call AfxBeginThread globally.
InitInstance gets called only when a object is created
|
|
|
|
|
An MFC app has to have ONE CWinApp object.
That's by design. Why are you trying to do it differently?
You need a thread running to create another thread
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Sorry for the very very very late reply and thanks a lot now understood
|
|
|
|
|
questions and statements for (your) confirmation:
* more than one device can be associated to an IOCP
* each device would have its own thread pool
* each thread pool is associated to a particular function. which is why ANY of the threads (although usually the last in) in the pool can be awakened each time there is a new entry in the completion queue.
* somehow IOCP knows which thread in a pool to wake up depending on which IOCP-associated device has a completed IO request.
thanks in advance.
----------------------------------------------------------
"unzip; strip; touch; finger; mount; fsck; more; yes; unmount; sleep" - my daily unix command list
|
|
|
|
|
swjam wrote: more than one device can be associated to an IOCP
True (more than one handle - not necessarily device).
swjam wrote: each device would have its own thread pool
False. The number of threads in the pool is determined by how many threads
are waiting on the completion port with GetQueuedCompletionStatus().
swjam wrote: each thread pool is associated to a particular function. which is why ANY of the threads (although usually the last in) in the pool can be awakened each time there is a new entry in the completion queue.
False.
swjam wrote: somehow IOCP knows which thread in a pool to wake up depending on which IOCP-associated device has a completed IO request.
False. You can make no assumptions on which thread waiting in GetQueuedCompletionStatus()
will "wake up", unless you only have one thread in the pool.
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Wow. Early for you, what up?
led mike
|
|
|
|
|
LMAO!
Since you asked, I had mexican food last night that's just not digesting...
I couldn't sleep any longer!
Hmm usually I'm turning my computer on about now...
It's good to work at home
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Mark Salsbery wrote: False. The number of threads in the pool is determined by how many threads
are waiting on the completion port with GetQueuedCompletionStatus().
i'm still tad confused
say multiple devices are associated to a completion port. surely each function will be different for each thread associated with a device? how then does the system know which one to wake up when an entry appears in the competion queue?
----------------------------------------------------------
"unzip; strip; touch; finger; mount; fsck; more; yes; unmount; sleep" - my daily unix command list
|
|
|
|
|
IOCPs are a bit confusing at first
swjam wrote: surely each function will be different for each thread associated with a device?
Not so. There's no parameter passed to GetQueuedCompletionStatus() that associates
the thread with a certain device. You'll need to provide any association yourself
in your overlapped structures.
swjam wrote: how then does the system know which one to wake up when an entry appears in the competion queue?
It's undocumented, but it may just take the next thread waiting in
GetQueuedCompletionStatus(). There's no particular order or association with
a certain thread.
These articles helped me a lot when I first used an IOCP.
They are socket-related but the same principles apply to any
overlapped IO device...
Writing Windows NT Server Applications in MFC Using I/O Completion Ports[^]
Write Scalable Winsock Apps Using Completion Ports[^]
INFO: Design Issues When Using IOCP in a Winsock Server[^]
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Hi,
I just downloaded WinObj doesn't seem like there is much documentation
Anyway here is my Question
If while stepping thru my Code (Debugging) after I execute CreateEvent (with name) I get a Handle Back
If I then Bring up WinObj Shouldn't I see that Event if I open up the Kernel Object folder
|
|
|
|
|
hello,
i have one integer array....{1,12,3,64,555}
i need to convert each integer as "CString"
i try to use Format() like
ex:
CString str;
int i=0;
str.Format("%d",i);
It wasa giving an Error.
Can any one help me in this regard.
Thanks in advance....!!!!!
|
|
|
|
|
I can't see anything wrong with this code. What error are you getting?
|
|
|
|
|
phanindra varma wrote: str.Format("%d",i);
Are you doing a fully Unicode build? Are you missing the _T macro? Have you tried: str.Format(_T("%d"),i); instead?
Many are stubborn in pursuit of the path they have chosen, few in pursuit of the goal - Friedrich Nietzsche
.·´¯`·->Rajesh<-·´¯`·.
[Microsoft MVP - Visual C++]
|
|
|
|
|
That's pretty much the only explanation for this code to fail...
|
|
|
|
|
Thanks.....
I forget _T();
Thanks again.. because Even for this silly question also u r guided me in a rigtt way....
Bye....
|
|
|
|
|
That's fine, but please make sure that you provide all the necessary information with your query, so that it would be easier for others to help you.
You said there was an error, but did not say what it was. Take care of these things in the future.
Many are stubborn in pursuit of the path they have chosen, few in pursuit of the goal - Friedrich Nietzsche
.·´¯`·->Rajesh<-·´¯`·.
[Microsoft MVP - Visual C++]
|
|
|
|
|
O.k Thanks for the Suggestion !!!!!
|
|
|
|
|
In addition to what Rajesh said, I would also advice you not to use SMS text while posting messages here.
Regards,
Vijay.
|
|
|
|
|
phanindra varma wrote: It wasa giving an Error.
Turn your monitor around so we can see it.
"Love people and use things, not love things and use people." - Unknown
"The brick walls are there for a reason...to stop the people who don't want it badly enough." - Randy Pausch
|
|
|
|