Question: I just got a Beagle Board and started working with Cloud9. Everything worked fine until I tried to integrate it with Github. 

I could git init because I "didn't have sudo permissions" on Cloud9. Therefore, I cloned a repo to use with Cloud9. **Now, however, it looks like the Beagle Board dependencies are no longer there.** I get this error:

![enter image description here](https://i.stack.imgur.com/Zar2r.png)

The code I'm trying to run (which gets the error) is:

```
var b = require("bonescript");
b.pinMode('USR0', b.OUTPUT);
b.digitalWrite('USR0', b.HIGH);

```

Answer: 
The operating system matters, but it is rather universal. The thread gets *scheduled* to execute. When the operating system gets around to actually make it run is entirely unpredictable. You'll have decent odds for "quickly" on a machine with multiple cores, universally available today.

thread::join() just ensures that the thread finished executing. You would *never* actually write code like this, it is completely pointless to start a thread and then wait for it to complete. Might as well execute the thread's code directly. Same outcome without bogging down the operating system with creating a thread.
You cannot know in which order or on which core your thread will be run.

A posix thread is basically treated by linux as a process sharing its heap with another one.
The kernel will schedule them and decide which core to use. For instance look at the generated (protected) assembly you will not see any "multicore/multithread programming", as this is done at kernel level. 

This is why function such as join, and artifacts such as mutex/semaphores exists. To take care of race condition and other related stuffs.