node.js - 为毛我的 NodeJS 的 C++ 包退不出?
ringa_lee
ringa_lee 2017-04-17 11:20:17
[Node.js讨论组]

写了个 C++ 包,但是测试的时候调用了函数之后 NodeJS 貌似就没退出了,就算是写了 process.exit(1) 也还是卡在那里——但是的确是处理完成了。

https://github.com/XadillaX/thmclrx/tree/30665bd6b27c4e7fa9a6c03f038fa56d233420f9/src

测试代码大致为:

var thmclrx = require("../build/Release/thmclrx.node");
var getPixel = require("get-pixels");
var fs = require("fs");

getPixel("pic.jpg", function(err, pixels) {
    var data = pixels.data;
    var array = [];
    for(var i = 0; i < data.length; i += 4) {
        var r = data.readUInt8(i);
        var g = data.readUInt8(i + 1);
        var b = data.readUInt8(i + 2);
        array.push({ r: r, g: g, b: b });
    }

    result = thmclrx.octreeGet(array);
    console.log("done");

    var string = "";
    for(var i = 0; i < result.length; i++) {
        string += "<p style=\"width: 50px; height: 21px; float: left; margin-right: 5px; margin-bottom: 5px; background: #" + result[i].color + "; color: #fff; font-size: 12px; text-align: center; padding-top: 9px;\">" + result[i].count + "</p>";
    }

    fs.writeFileSync("test.html", string, "utf8");
    thmclrx.cleanPool();
});

那个 done 的确是输出了,测试的 test.html 也出来了,就是程序没有退出,除非我 Ctrl + C

哪位菊苣有经验帮忙解决下 0. 0?

ringa_lee
ringa_lee

ringa_lee

全部回复(3)
大家讲道理

问题找到了,是我自己 C++ 里的问题。

为了贪省力,写个内存池都用 STL,用什么不好还用 list,然后就卡死了。

最后我改用 queue 代替 list 就好了。

巴扎黑

从js代码上看没有问题

怪我咯

writeFileSync 代码贴出来看看?

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号