|
Boost Users : |
From: janardhan.guptha_at_[hidden]
Date: 2004-02-10 06:43:29
I am creating a boost thread, how to know in which state it is created.
I have a code snippet that is waiting always in the thread creatin functon
istelf. Where as i tried with some boost samples, they are working amazingly
perfect. This is how my code snippet looks like
typedef boost::mutex::scoped_lock lock;
class testCommand {
static void threadfunc() {
testCommand *testObj = mMapCommand[mObjID];
testObj->processthread();
};
static map< int mObjID, testCommand*> mMapCommand;
private:
void createthread() {
mThread = new boost::thread(&testCommand::threadfunc);
}
void processthread() {
lock lk(mMutex);
mCondition.wait(lk);
//// Some Action
};
void runthread() {
lock lk(mMutex);
mCondition.notify_one();
};
public:
static int mObjID;
boost::thread *mThread;
boost::condition mCondition;
boost::mutex mMutex;
};
The newly created thread is waiting at the following location forever, by
the time
i get a chance to execute the new thread is greatly delayed.
NTDLL! 77f8856e()
boost::detail::thread::lock_ops<boost::mutex>::unlock(boost::mutex & {...})
line 49
boost::detail::thread::scoped_lock<boost::mutex>::unlock() line 85 + 11
bytes
boost::detail::thread::scoped_lock<boost::mutex>::~scoped_lock<boost::mutex>
() line 74
`anonymous namespace'::thread_param::started() line 47 + 15 bytes
thread_proxy(void * 0x0012fd74) line 71
_threadstartex(void * 0x00961040) line 212 + 13 bytes
KERNEL32! 7c57b382()
It sounds like i am missing something here. The queries here are
1. why it is waiting at the above specified line forever ?
2. Where can i get few worth thread samples done using boost::thread
Regards
Janardhan
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net