写了个 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?
问题找到了,是我自己 C++ 里的问题。
为了贪省力,写个内存池都用
STL
,用什么不好还用list
,然后就卡死了。最后我改用
queue
代替list
就好了。