Be concise.
Be useful.
All contributions dictatorially edited by webmasters to match personal tastes.
Please do not paste any copyright violating material.
Please try to avoid dependencies to third-party libraries and frameworks.
size_t taskCount = 1000;
auto remainingTasks = std::latch(static_cast<std::ptrdiff_t>(taskCount));
auto f = [&remainingTasks](int i) {
// do work
remainingTasks.count_down();
};
std::vector<std::jthread> threads{ 10 };
for (auto i = 0; i < taskCount; i++) {
auto& workerThread = threads[i % 10];
if (workerThread.joinable()) {
workerThread.join();
}
workerThread = std::jthread(f, i);
}
remainingTasks.wait();
std::cout << "Finished";
int numTasks = 1000;
Task<int>[] output = new System.Threading.Tasks.Task<int>[numTasks];
for (int i = 0; i < numTasks; i++)
{
output[i] = Task.Factory.StartNew(
new Func <object, int>(LongRunningOperation), 2000);
}
Task.WaitAll(output);
int LongRunningOperation(object objMs)
{
int ms = (int)objMs;
Thread.Sleep(ms);
return ms;
}
# 1
f = &(IO.puts(&1))
# 2
printTimes = &(for n <- 1..&1, do: spawn(fn -> f.(n) end))
# 3
fn -> printTimes.(1000) end |> Task.async |> Task.await
IO.puts("Finished")
run_n_times(Fun, N) ->
Self = self(),
Task = fun (I) -> spawn(?MODULE, run_task_and_notify_completion, [Self, Fun, I]) end,
lists:foreach(Task, lists:seq(1, N)),
wait_for_n_tasks(N).
run_task_and_notify_completion(ParentPid, Fun, Arg) ->
Fun(Arg),
ParentPid ! done.
wait_for_n_tasks(0) ->
io:format("Finished~n");
wait_for_n_tasks(N) when N > 0 ->
receive
done ->
ok
end,
wait_for_n_tasks(N-1).
run_n_times(F, 1000).
integer :: tasks, n, t, i
tasks = 1000
n = num_images()
t = this_image()
do i = t, tasks, n
call f(i)
end do
sync all
print *,"Finished"
const tasks = [];
for (let i = 0; i < 1000; i++) {
tasks.push(f(i));
}
await Promise.all(tasks);
console.log("Finished");
{
// in file worker.js
onmessage = f
}
{
// in file main.js
for (let i = 0; i < 1000; i++) {
new Worker ('worker.js')
.postMessage (i)
}
}
class Task implements Runnable {
int i;
Task(int i) {
this.i = i;
}
@Override
public void run() {
f(i);
}
}
ExecutorService executor = Executors.newFixedThreadPool(4);
for (int i = 1; i <= 1000; i++) {
Task task = new Task(i);
executor.submit(task);
}
executor.shutdown();
executor.awaitTermination(10L, TimeUnit.MINUTES);
System.out.println("Finished");
threads = 1000.times.map do |i|
Thread.new { f(i) }
end
threads.join