前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >blink跨线程解析html有点小问题

blink跨线程解析html有点小问题

作者头像
龙泉寺扫地僧
发布2019-02-20 10:39:42
4710
发布2019-02-20 10:39:42
举报
文章被收录于专栏:盟主来了盟主来了

BackgroundHTMLParser::updateDocument里会

Platform::current()->mainThread()->postTask(FROM_HERE, 

threadSafeBind(&HTMLDocumentParser::didReceiveEncodingDataFromBackgroundParser, AllowCrossThreadAccess(m_parser), encodingData));

发一个编码名字给主线程,但如果主线程过快的收到资源接收完成的消息:

> node.dll!blink::HTMLDocumentParser::stopBackgroundParser() 行 805 C++ node.dll!blink::HTMLDocumentParser::end() 行 859 C++ node.dll!blink::HTMLDocumentParser::attemptToRunDeferredScriptsAndEnd() 行 873 C++ node.dll!blink::HTMLDocumentParser::prepareToStopParsing() 行 273 C++ node.dll!blink::HTMLDocumentParser::processParsedChunkFromBackgroundParser(WTF::PassOwnPtr<blink::HTMLDocumentParser::ParsedChunk> popChunk) 行 511 C++ node.dll!blink::HTMLDocumentParser::pumpPendingSpeculations() 行 563 C++ node.dll!blink::HTMLDocumentParser::resumeParsingAfterScriptExecution() 行 1000 C++ node.dll!blink::HTMLDocumentParser::notifyScriptLoaded(blink::Resource * cachedResource) 行 1036 C++ node.dll!blink::HTMLScriptRunner::notifyFinished(blink::Resource * cachedResource) 行 200 C++ node.dll!blink::Resource::checkNotify() 行 253 C++ node.dll!blink::Resource::finishOnePart() 行 305 C++ node.dll!blink::Resource::finish() 行 312 C++ node.dll!blink::ResourceLoader::didFinishLoading(blink::WebURLLoader * __formal, double finishTime, __int64 encodedDataLength) 行 476 C++ node.dll!net::WebURLLoaderManager::handleDidFinishLoading(net::WebURLLoaderInternal * job, double finishTime, __int64 totalEncodedDataLength) 行 471 C++

就会关掉这个BackgroundHTMLParser,导致这个HTMLDocumentParser::didReceiveEncodingDataFromBackgroundParser,收不到,从而发生乱码

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017年11月12日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档