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 + -
显示快捷键?