Book Image

D Cookbook

By : Adam Ruppe
Book Image

D Cookbook

By: Adam Ruppe

Overview of this book

Table of Contents (21 chapters)
D Cookbook
Credits
Foreword
About the Author
About the Reviewers
www.PacktPub.com
Preface
Index

Using threads


Threads are a common building block for multitasking inside a single process. A thread is an independent stream of program execution that has access to the memory of other threads.

How to do it…

To start using threads, we will have to execute the following steps:

  1. Write the command import core.thread;.

  2. Write a function to perform your independent task.

  3. If the thread needs to pause, use the static method Thread.sleep from the thread to be paused.

  4. Create an additional thread with auto thread = new Thread, passing it as a pointer to your function.

  5. Call thread.start to begin execution.

Take a look at the following code:

import core.thread;
import core.atomic;

import std.stdio;

int count = 0;
shared(int) sharedCount = 0;

// this is the function that will run in our threads
void threadedFunction() {
  foreach(i; 0 .. 5) {
    writeln("thread running ", count++, " global: ", sharedCount);
    Thread.sleep(1.seconds);
    atomicOp!"+="(sharedCount, 1);
  }
}

void main() {
  auto thread ...