قراءة قيم الخلية في خيوط متعددة بشكل متزامن

Contents
[ ]

لقياس قيم الخلايا في أكثر من خيط واحد في نفس الوقت، اضبط Cells.setMultiThreadReading(boolean) على true. إذا لم تفعل ذلك، قد تحصل على قيم خلايا غير صحيحة.

الكود التالي:

  1. ينشئ دفتر عمل.
  2. إضافة ورقة عمل.
  3. ملء ورقة العمل بقيم السلسلة.
  4. ثم ينشئ خيطين يقرأان قيمًا بشكل متزامن من الخلايا العشوائية. إذا كانت القيم المقروءة صحيحة، لا يحدث شيء. إذا كانت القيم المقروءة غير صحيحة، يتم عرض رسالة.

إذا قمت بتعليق هذا السطر:

testWorkbook.getWorksheets().get(0).getCells().setMultiThreadReading(true);

سيتم عرض الرسالة التالية:

if (s !== "R" + row + "C" + col)
{
    console.log("This message box will show up when cells read values are incorrect.");
}

وإلا، يعمل البرنامج بدون عرض أي رسالة مما يعني أن جميع القيم المقروءة من الخلايا صحيحة.

const path = require("path");
const AsposeCells = require("aspose.cells.node");
const dataDir = path.join(__dirname, "data");
let testWorkbook;
const threadLoop = () => {
const random = Math.random;
while (true) {
try {
const row = Math.floor(random() * 10000);
const col = Math.floor(random() * 100);
const s = testWorkbook.getWorksheets().get(0).getCells().get(row, col).getStringValue();
if (s !== "R" + row + "C" + col) {
console.log("This message will show up when cells read values are incorrect.");
}
} catch (e) {}
}
};
const testMultiThreadingRead = () => {
testWorkbook = new AsposeCells.Workbook();
testWorkbook.getWorksheets().clear();
testWorkbook.getWorksheets().add("Sheet1");
for (let row = 0; row < 10000; row++)
for (let col = 0; col < 100; col++)
testWorkbook.getWorksheets().get(0).getCells().get(row, col).setValue("R" + row + "C" + col);
// Uncommenting this line will enable multi-threaded reading
//testWorkbook.getWorksheets().get(0).getCells().setMultiThreadReading(true);
const myThread1 = setInterval(threadLoop, 0);
const myThread2 = setInterval(threadLoop, 0);
setTimeout(() => {
clearInterval(myThread1);
clearInterval(myThread2);
}, 5 * 1000);
};
testMultiThreadingRead();