An isolate has a table with per-thread data, which is implemented as a
linked list and scanned linearly. So yes, when a single isolate has seen
many threads, locking it will become slower. Since there's typically no
reason to access the same isolate with thousands of threads, I wouldn't
consider this a bug.

On Mon, Dec 15, 2014 at 11:42 AM, <[email protected]> wrote:
>
>
> <https://lh6.googleusercontent.com/-sPNEtxGhqEc/VI6531u4HQI/AAAAAAAAAHw/2rZtAitF4bM/s1600/Screenshot%2Bfrom%2B2014-12-15%2B18%3A10%3A09.png>
> My Os is fedora20, v8 version is v8-3.25.30,
> first loop consumes 0.02 second, and then the 172th's loop consumes
> 2.48second.
>
> #include <pthread.h>
> #include <v8.h>
> #include <sys/time.h>
>
> double GetTime()
> {
>     timeval tv;
>     gettimeofday(&tv, NULL);
>     return tv.tv_sec + (double)tv.tv_usec * 0.000001;
> }
>
> v8::Isolate *isolate;
>
> class Thread
> {
>     public:
>         static void* Start(void *thread)
>         {
>             static_cast<Thread*>(thread)->Start_();
>         }
>     private:
>         void Start_()
>         {
>             v8::Locker locker(isolate);
>             v8::Isolate::Scope scope(isolate);
>         }
>
> };
>
> void test(pthread_t tid[], Thread thread[])
> {
>     for (int i = 0; i < 1024; ++i)
>     {
>         pthread_create(&tid[i], NULL, Thread::Start, &thread[i]);
>     }
>     for (int i = 0; i < 1024; ++i)
>     {
>         pthread_join(tid[i], NULL);
>     }
> }
>
> int main(int argc, char* argv[])
> {
>     v8::V8::Initialize();
>     isolate = v8::Isolate::New();
>     {
>         pthread_t tid[1024];
>         Thread thread[1024];
>         for (int i = 0; i < 1000 * 1000 * 1000; ++i)
>         {
>             double s = GetTime();
>             test(tid, thread);
>             printf("%d. %f\n", i+1, GetTime() - s);
>         }
>     }
>     isolate->Dispose();
>     v8::V8::Dispose();
> }
>
>  --
> --
> v8-dev mailing list
> [email protected]
> http://groups.google.com/group/v8-dev
> ---
> You received this message because you are subscribed to the Google Groups
> "v8-dev" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.
>

-- 
-- 
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- 
You received this message because you are subscribed to the Google Groups 
"v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to