|
A popular (and free) C++ CORBA implementation is TAO[^].
But I agree with previous posters - CORBA is a complex subject and you should really get a book, such as this one[^]. Good luck.
|
|
|
|
|
A previous response indicated that your applications are on the same machine. If so, then use shared memory queue. This will give you the best performance, the easiest code to write and debug and none of the headaches of CORBA or COM (or TCP/Named Pipes/etc.)
|
|
|
|
|
OK, sounds like a risky proposition to me...
1st, develop some sort of super weapon.
2nd, keep it totally secret, then ask US special forces to transport it somewhere.
3rd, When attacked by CORBA COMMANDOs, ask them politely to hand deliver some messages for you.
4th, Make sure you are a hot babe, then they will only knock you out.
As I said, more than a little risky, and also complicated. You will need to save up a lot of money for an underground lair also...
What, you didn't say COBRA?
Iain,
I have now moved to Sweden for love (awwww).
If you're in Scandinavia and want an MVP on the payroll (or happy with a remote worker), or need cotract work done, give me a job! http://cv.imcsoft.co.uk/[ ^]
|
|
|
|
|
Hi all,
i have made a worker thread and from that worker thread i am calling function to do some processing.
i have started my worker thread using this code
pThread = AfxBeginThread(Thread , (LPVOID) this);
I am terminating that thread on click event of a button, using this code
int ret = ::TerminateThread(pThread->m_hThread,NULL);
My problem is when TerminateThread line is being executed pointer never returns back i can't get its return value and lines after that piece of code is not being executed.
How to resolve this problem??
Thanks in advance...
To accomplish great things, we must not only act, but also dream;
not only plan, but also believe.
|
|
|
|
|
"_$h@nky_" wrote: How to resolve this problem??
Don't use TerminateThread, as stated in the documentation . There are much cleaner way to stop a thread than killing it brutaly. You might want to use a flag: a simple boolean that is set by your mean thread and that your worker checks to see if it has to stop. In which case, simply stop your "loop" in the worker thread.
Using TerminateThread is a very very very bad practice and should be avoided at all costs.
|
|
|
|
|
"_$h@nky_" wrote: How to resolve this problem??
Never call TerminateThread : that is the last, last, last resource. See instead [^].
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
It seems like you are terminating the same thread that is executing the specified code... Debugging will help you to identify that.
Btw, TerminateThread is not a good practice.
- ns ami -
|
|
|
|
|
ns ami wrote: It seems like you are terminating the same thread that is executing the specified code...
What's the evidence of that?
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
I tried with a sample...
- ns ami -
|
|
|
|
|
Hence your code shows such a behaviour...
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
What about trying yourself?
- ns ami -
|
|
|
|
|
I don't need to: I suppose to know both about your code and the OP's one. My mental-diff-tool says they are not the same...
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
::TerminateThread( GetCurrentThread(), 0 );
cout << "after termination" << endl;
cout.flush();
This was my sample code...
- ns ami -
|
|
|
|
|
Your hypothesis is actually clever, anyway I cannot see how it fits with OP's introduction:
"_$h@nky_" wrote: i have made a worker thread and from that worker thread i am calling function to do some processing.
i have started my worker thread using this code
pThread = AfxBeginThread(Thread , (LPVOID) this);
I am terminating that thread on click event of a button, using this code
int ret = ::TerminateThread(pThread->m_hThread,NULL);
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
- ns ami -
|
|
|
|
|
ns ami wrote: ::TerminateThread( GetCurrentThread(), 0 );
Of course, you are terminating the current thread, so it's normal that nothing after is executing . The OP terminates a thread which is probably not the current thread (we can't be 100% sure about that but chances are big that this is another thread).
EDIT: actually, yes it is a different thread because the OP terminates the thread which was created by calling AfxBeginThread.
|
|
|
|
|
I was just pointing out a possibility that I found.
From OP's code I too believe that he is terminating the thread created with AfxBeginThread. I think debugging is helpful for him to ensure that which thread is being executed.
- ns ami -
|
|
|
|
|
ns ami wrote: I was just pointing out a possibility that I found.
From OP's code I too believe that he is terminating the thread created with AfxBeginThread.
That's not what you were saying in your first message and what this all discussion is about. This is what you said and on what Carlo was arguing with you:
It seems like you are terminating the same thread that is executing the specified code...
|
|
|
|
|
Cedric Moonen wrote: That's not what you were saying in your first message and what this all discussion is about.
I really didn't get you...
Cedric Moonen wrote: It seems like you are terminating the same thread that is executing the specified code...
I intended that the thread which executes the following code is being terminated by itself.
int ret = ::TerminateThread(pThread->m_hThread,NULL);
This can be equal to
::TerminateThread( GetCurrentThread(), 0 );
and can cause the issue specified by the OP.
If I am wrong please tell me...
- ns ami -
|
|
|
|
|
After a fairly good sleeping, I understood that we were thinking different...
- ns ami -
|
|
|
|
|
People here will bluntly refuse to look into any code that makes use of things like TerminateThread() .
"_$h@nky_" wrote: How to resolve this problem??
You can start by removing calls to TerminateThread()
It is a crappy thing, but it's life -^ Carlo Pallini
|
|
|
|
|
hi:
now,i am learning MFC, now,i build a dialog program,and want to make it like the dialog in vista,how to do?
my envionment : windows xp, vs 2008.
would sb have a sample? if so,could send it to me by email?
email:zhanghui5432@live.com
ai!! mybe i should learn english first. wright this ,nearly spend my life~~~
hoho~~~
zhangyunhui haha
|
|
|
|
|
zhanghui5432 wrote: ...i build a dialog program,and want to make it like the dialog in vista,how to do?
Sounds like you need a manifest file.
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
|
|
|
|
|
~~~~
melancholy !!
how can i do ?
do you have some ensample about this,
I want to find some in codeproject,but,it`s hard to me for my poor english.
|
|
|
|
|
zhanghui5432 wrote: do you have some ensample about this,
I want to find some in codeproject,but,it`s hard to me for my poor english.
See here.
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
|
|
|
|