Boost logo

Boost Users :

From: janardhan.guptha_at_[hidden]
Date: 2004-02-10 23:32:39


The rest of the applicatin is just creating the object and preparing it
for execution. I am using Win32 version of boost.Thread implementation.

The creation code snipet is

void main() {
        testCommand *tObj = new testCommand(11);
        tObj->createthread();
        tObj->runthread();
}

-----Original Message-----
From: boost-users-bounces_at_[hidden]
[mailto:boost-users-bounces_at_[hidden]]On Behalf Of Michael
Glassford
Sent: Wednesday, February 11, 2004 12:17 AM
To: boost-users_at_[hidden]
Subject: [Boost-users] Re: Thread creation state

It would be a lot easier to help if you could post a complete,
compilable example that demonstrates the problem. Also, it would be
useful to know whether you are using the Win32, pthread, or Mac
implementation of Boost.Thread.

Thanks,

Mike

<janardhan.guptha_at_[hidden]> wrote in message
news:433CFA26BCA852438922F929E3D07955AE53A7_at_blraddc02.efi.internal...
> 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 mailing list
Boost-users_at_[hidden]
http://lists.boost.org/mailman/listinfo.cgi/boost-users


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