No, you aren't missing anything. Win32::OLE is not compatible with the Perl 5.8 threading model.
There are several issues that need to be solved:
Whenever Perl creates a new thread, Win32::OLE needs to be informed of this so that it can initialize the COM subsystem for that thread (via CoInitializeEx()).
Win32::OLE cannot simply be cloned and used in a different thread: COM objects belong to an "apartment", and depending on the COM threading model used by Perl and the external components, it is possible that COM pointers need to be marshalled to be accessible from a different thread.
It is on my todo list to implement this, but I'm currently very busy with other stuff.
BTW, there are other modules too that need per-thread initialization etc. that need fixing before they can be used with Perl 5.8 and threads, e.g. Win32::ODBC.
In reply to Re: threading and Win32::OLE
by jand
in thread threading and Win32::OLE
by ebodine
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |