理解v8的Isolate调度

本文探讨了V8引擎在多线程环境中如何管理与调度多个Isolate,通过实例代码揭示了其内部工作原理。
摘要由CSDN通过智能技术生成

这两天看了一下v8的在多线程情况下多个Isolate的调度原理,别的不多说了还是先看一下测试代码吧

#include <v8.h>
#include <iostream>
#include <pthread.h>
#include <unistd.h>

using namespace v8;

typedef struct _Args
{
		Isolate* isolate;
		char message[256];
} Args;

void* test(void* data)
{
	Args* args = (Args*) data;
	Isolate* isolate = args->isolate;

	if (isolate == NULL)
	{
		std::cout << "null isolate found" << std::endl;
		delete args;
		return NULL;
	}

	Isolate* current = Isolate::GetCurrent();
	if (current == NULL)
	{
		std::cout << "current isolate is null before locker" << std::endl;
	}
	else
	{
		std::cerr << "current isolate is not null before locker" << std::endl;
	}
	Locker locker(isolate);

	current = Isolate::GetCurrent();
	if (current != NULL)
	{
		std::cerr << "current isolate is not null after locker" << std::endl;
	}
	else
	{
		std::cout << "current isolate is null after locker" << std::endl;
	}

	Isolate::Scope isolate_scope(isolate);

	current = Isolate::GetCurrent();
	if (current == NULL)
	{
		std::cerr << "current isolate is null after enter" << std::endl;
	}
	else
	{
		std::cout << "current isolate is not null after enter" << std::endl;
	}

	// Create a stack-allocated handle scope.
	HandleScope handle_scope(isolate);

	// Create a n
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值