44 lines
1.1 KiB
JavaScript
44 lines
1.1 KiB
JavaScript
|
function QVERIFY(x, debugInfo) {
|
||
|
if (!(x)) {
|
||
|
print(debugInfo);
|
||
|
throw(debugInfo);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
var producer = new ScriptSharedMemory;
|
||
|
producer.setKey("market");
|
||
|
|
||
|
var size = 1024;
|
||
|
if (!producer.create(size)) {
|
||
|
QVERIFY(producer.error() == 4, "create");
|
||
|
QVERIFY(producer.attach());
|
||
|
}
|
||
|
//print ("producer created and attached");
|
||
|
|
||
|
QVERIFY(producer.lock());
|
||
|
producer.set(0, 'Q');
|
||
|
QVERIFY(producer.unlock());
|
||
|
|
||
|
var i = 0;
|
||
|
while(i < 5) {
|
||
|
QVERIFY(producer.lock(), "lock");
|
||
|
if (producer.get(0) == 'Q') {
|
||
|
QVERIFY(producer.unlock(), "unlock");
|
||
|
producer.sleep(1);
|
||
|
continue;
|
||
|
}
|
||
|
//print("producer: " + i);
|
||
|
++i;
|
||
|
producer.set(0, 'Q');
|
||
|
QVERIFY(producer.unlock(), "unlock");
|
||
|
producer.sleep(1);
|
||
|
}
|
||
|
QVERIFY(producer.lock());
|
||
|
producer.set(0, 'E');
|
||
|
QVERIFY(producer.unlock());
|
||
|
|
||
|
//print ("producer done");
|
||
|
|
||
|
// Sleep for a bit to let all consumers start, otherwise they will get stuck in the attach loop,
|
||
|
// because at least in Symbian the shared memory will be destroyed if there are no active handles to it.
|
||
|
producer.sleep(3000);
|