Hi, Dianne: Thanks!
This question sent is because I set a log at
ProcessState::spawnPooledThread(bool isMain)
Found only the first calling of this API, "isMain" is true;
I found this flag only be used at following case in
IPCThreadState::joinThreadPool:
if(result == TIMED_OUT && !isMain) {
break;
}
It is true that the different of them(isMain is true or false) is
small,
>From the log:
ProcessState::spawnPooledThread(false)
is called(from the log, only first calling of this API within one
process, isMain is true, later, it would always be false),
I guess it is called at IPCThreadState::executeCommand:
case BR_SPAWN_LOOPER:
mProcess->spawnPooledThread(false);
break;
So I not sure in what scenario BR_SPAWN_LOOPER is used?
Thanks&BstRgds
gan
On Jan 4, 3:27 pm, "Dianne Hackborn" <[email protected]> wrote:
> I don't know what you mean by a "NONEMain Binder Thread," but each process
> using the Binder will have multiple threads running in a thread pool to
> process incoming transactions and other work.
>
> Also there is no strong rule about the main thread ending up in the thread
> pool (and nothing really special about that thread if it does go into the
> thread pool vs. any of the other spawned threads); in fact for normal app
> processes the main thread sits in the Java Looper class processing the main
> message queue of the process.
>
> The system process is a little different, in that I believe the main thread
> gets put into the binder thread pool, and another thread is created and runs
> what serves as the main message queue/loop of the process, but it is really
> only done this way due to convenience of implementation.
>
>
>
>
>
> On Sat, Jan 3, 2009 at 11:08 PM, gan <[email protected]> wrote:
>
> > Hi:
>
> > When I use "ps -p -t" to get the process and thread information, I
> > ofter found many "Binder Thread" belong to one Process.
>
> > My understanding is:
> > Only one "Binder Thread" is the "main Binder Thread" of that process.
> > It would be blocked in ioctl used for "waiting to read". (later to
> > execute some command by "BnXXXX::onTransact" according to read
> > contents. )
> > And it would be wake up by ioctl "writing" invoked by another
> > process's BpBinder::transact.
>
> > I found
> > /*spawn a new thread if we leave this out */
> > at the end of binder_thread_read.
>
> > My question is:
> > What the "NONEMain Binder Thread" used for?
> > Why new thread spawned?
> > What is it's relationship with old "main binder thread"?
>
> > Thanks&BstRgds
> > gan
>
> --
> Dianne Hackborn
> Android framework engineer
> [email protected]
>
> Note: please don't send private questions to me, as I don't have time to
> provide private support. All such questions should be posted on public
> forums, where I and others can see and answer them.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"android-framework" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-framework?hl=en
-~----------~----~----~----~------~----~------~--~---