Hello, Andi.

I have answer from creator of omniORBpy. He told that threads are
created in the C++ source. Is there a way to use PyLucene object
without inheriting from PyLucene.PythonThread class?

---------- Forward Message ----------
From:   Duncan Grisby <[EMAIL PROTECTED]>
To:     Yura Smolsky <[EMAIL PROTECTED]>
CC:     [EMAIL PROTECTED]
Time:   Fri, 11 Feb 2005 05:55:03 -0600
Subj:   [omniORB] Threads management for omniORBpy
Attach: <none>

On Thursday 10 February, Yura Smolsky wrote:
> Does omniORBpy use worker threads defined in C++ sources or defined in
> Python sources?..

C++. At the time threads are allocated to serve calls, omniORB doesn't
know if the call is destined for a C++ or a Python servant.

Cheers,
Duncan.
---------- End of Forward ----------


>> It is not me! :) It is sources of omniORBpy. They use complicated logic
>> about management of threads. I suspect one very bad thing: they can
>> start new threads from C++ sources (some part of this software has
>> been written on C++).

AV> Yes, that could be a problem indeed.

AV> Andi..

>>
>> AV> I don't understand why this class is so complicated and what you're 
>> doing with
>> AV> those _thr_ variables. All you need to do from PyLucene's standpoint is 
>> extend
>> AV> PyLucene.PythonThread, ensure its __init__ is called, instantiate the 
>> thread,
>> AV> and then start it with its start() method.
>>
>> AV> Andi..
>>
>> AV> On Thu, 10 Feb 2005, Yura Smolsky wrote:
>>
>>>> Hello, Andi.
>>>>
>>>> yes, it has.
>>>> i am not confident about  _thr_act, _thr_acq, _thr_rel variables.
>>>> maybe they could affect.
>>>>
>>>> _thr_init = PythonThread.__init__
>>>> _thr_id   = threading._get_ident
>>>> _thr_act  = threading._active
>>>> _thr_acq  = threading._active_limbo_lock.acquire
>>>> _thr_rel  = threading._active_limbo_lock.release
>>>>
>>>> class WorkerThread(PythonThread):
>>>>
>>>>    hooks = []
>>>>
>>>>    def __init__(self):
>>>>        _thr_init(self, name="omniORB")
>>>>        self._Thread__started = 1
>>>>        self.id = _thr_id()
>>>>        _thr_acq()
>>>>        if _thr_act.has_key(self.id):
>>>>            self.add = 0
>>>>        else:
>>>>            self.add = 1
>>>>            _thr_act[self.id] = self
>>>>        _thr_rel()
>>>>        if self.add:
>>>>            for hook in self.hooks:
>>>>                hook(WTHREAD_CREATED, self)
>>>>
>>>>    def delete(self):
>>>>        if self.add:
>>>>            for hook in self.hooks:
>>>>                hook(WTHREAD_DELETED, self)
>>>>            _thr_acq()
>>>>            del _thr_act[self.id]
>>>>            _thr_rel()
>>>>
>>>>    def _set_daemon(self): return 1
>>>>    def join(self):        assert 0, "cannot join an omniORB WorkerThread"
>>>>
>>>>
>>>> AV> Does the WorkerThread class that extends PyLucene.PythonThread have an
>>>> AV> __init__() method ? If so, does it call super(WorkerThread,
>>>> AV> self).__init__(*args, **kwds) so that
>>>> PyLucene.PythonThread's __init__ gets a
>>>> AV> chance to run ?
>>>>
>>>> AV> Andi..
>>>>
>>>> AV> On Thu, 10 Feb 2005, Yura Smolsky wrote:
>>>>
>>>>>> Hello, Andi.
>>>>>>
>>>>>> I have checked through threading.currentThread() that code executed
>>>>>> under thread inherited from PythonThread. What could be wrong in this
>>>>>> case?
>>>>>>
>>>>>> AV> Yes, 'collecting from unknown thread' means that libgcj is running a 
>>>>>> thread
>>>>>> AV> that was not initialized by it.
>>>>>>
>>>>>> AV> Andi..
>>>>>>
>>>>>> AV> On Sat, 1 Jan 2005, Yura Smolsky wrote:
>>>>>>
>>>>>>>> Hello, pylucene-dev.
>>>>>>>>
>>>>>>>> As I said early I try to run IndexSearcher under omniORBpy (CORBA)
>>>>>>>> server, which creates new thread for any call of server's method by
>>>>>>>> remote client.
>>>>>>>> I have replaced in the source of omniORBpy
>>>>>>>> WorkerThread(threading.Thread) to
>>>>>>>> WorkerThread(PyLucene.PythonThread).
>>>>>>>>
>>>>>>>> But when I try to call some methods of server remotely then I got java
>>>>>>>> message from Server which contains IndexSearcher:
>>>>>>>>
>>>>>>>> Collecting from unknown thread.
>>>>>>>>
>>>>>>>> It seems like message is about garbage collection.
>>>>>>>> Does it mean that server start non PythonThread thread?.. What issue
>>>>>>>> does this message point to?
>>>>>>>>
>>>>>>>>
>>>>>>>> Yura Smolsky
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> pylucene-dev mailing list
>>>>>>>> [email protected]
>>>>>>>> http://lists.osafoundation.org/mailman/listinfo/pylucene-dev
>>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> AV>
>>>>>>
>>>>>>
>>>>>>
>>>>>> Yura Smolsky,
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>
>>>>
>>>>
>>>> AV>
>>>>
>>>>
>>>>
>>>> Yura Smolsky,
>>>>
>>>>
>>>>
>>>>
>>
>>
>>
>> AV>
>>
>>
>>
>> Yura Smolsky,
>>
>>
>>
>>



AV> 



Yura Smolsky,



_______________________________________________
pylucene-dev mailing list
[email protected]
http://lists.osafoundation.org/mailman/listinfo/pylucene-dev

Reply via email to