首页 > 为毛我的 NodeJS 的 C++ 包退不出?

为毛我的 NodeJS 的 C++ 包退不出?

写了个 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 += "<div 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 + "</div>";
    }

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

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

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


从js代码上看没有问题


writeFileSync 代码贴出来看看?


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

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

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

【热门文章】
【热门文章】