📄 tasks.ctk
字号:
nMessages = 10000;
nConsumers = 10;
nProducers = 10;
main = currentThread();
mutex = createMutex();
totalSum = 0;
function consumer()
{
thread = currentThread();
sum = 0;
for (i = 0; i < nMessages; i++) {
msg = getMessage(thread);
sum += msg;
}
synchronized(mutex) {
totalSum += sum;
}
putMessage(main, sum);
}
function producer(consumers, init, step)
{
for (i = init; i < nMessages; i += step) {
for (j = 0; j < nConsumers; j++) {
putMessage(consumers[j], i);
}
}
}
consumers = [];
for (i = 0; i < nConsumers; i++) {
consumers[i] = par consumer();
}
for (i = 0; i < nProducers; i++) {
par producer(consumers, i, nProducers);
}
for (i = 0; i < nConsumers; i++) {
msg = getMessage(main);
assert(msg == nMessages*(nMessages-1)/2);
}
assert(totalSum == nConsumers*nMessages*(nMessages-1)/2);
println("Test finished");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -