tasks.ctk
来自「C-Talk is interpreted scripting language」· CTK 代码 · 共 55 行
CTK
55 行
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 + =
减小字号Ctrl + -
显示快捷键?