[Windows Phone 7 General] Spike15:
As much as I hate Microsoft for this "no multi-tasking" move, I should point out that Apple iPhone OS 4.0 does not have the level of multi-tasking that Windows Mobile and (I believe) Android do.

In iPhone OS 4.0, programs themselves actually are not allowed to run in the background, indeed, iPhone OS 4.0 uses the same "background" method WP7 does -- the program is kept in RAM until the RAM is needed, but it's barred from using CPU cycles.

In iPhone OS 4.0, what programs can do is access APIs that allow some of the programs' functionality to run in the background, which is much different.

To be totally honest, the whole "no multi-tasking" thing, given the reasons they've given, is a total wash.

Here's the low-down, if anyone cares:

They've said that there will be no multi-tasking for battery life's sake.

They've said that there will be no multi-tasking because it hogs system resources.

As for the first one, you'll need to understand some basic CPU/process mechanics to understand why it's so overwhelmingly stupid.

Basically, a process can be in one of three states:

1. Running

2. Runnable

3. Blocked

If a process is running, it is actively using the CPU to execute instructions. The CPU is active, battery power and system resources are being consumed.

If a process is runnable, it isn't actively using the CPU, but it wants to. That is, the task scheduler just hasn't gotten around to giving the process the CPU, or the CPU still wants more time. The process -- in this state -- is still causing the CPU to be active, battery power and system resources are being consumed, because another process is using the CPU.

If a process is blocked, it's waiting for something. In computing, there are basically two major ways to figure out of something has happened. You can take the five-year-old-in-a-car-on-a-long-trip route, and continually poll for the event-in-question, by asking "Has it happened yet?". This is called polling, and consumes system resources while it is occurring.

Alternatively -- and much more enlightened -- is interrupting. Under this scheme, when something happens, it can raise an interrupt. This causes the CPU to either stop what it's doing and handle the event, or to wake up and handle the event, passing the event to the corresponding process, which was waiting for the event.

Therefore, when processes are blocked, they are not contributing to CPU use, they are not using system resources (other than, of course, their RAM), and they are not draining battery power.

In fact, if you have a program that's totally GUI-driven, it will never consume CPU cycles unless there's a GUI event! And if it's in the background, where the user can't interact with it to raise any GUI events, it will consumer no CPU cycles!

When you think about it, the vast majority of applications are GUI-driven in this way, and therefore, when sent to the background, consume no CPU cycles and do not reduce battery life, that's why Windows Mobile and Android devices don't have terrible battery life.

The problem here isn't evil multi-tasking, the problem is developers. Developers write shoddy code, which uses CPU cycles for basically no reason, and therefore drains the battery.

Which makes you ask yourself: Isn't Microsoft auditing all the programs that are going into the Marketplace anyway?

So, couldn't they just allow for real multi-tasking, and use their Big Brother Marketplace control powers to ensure evil CPU-hogging code doesn't get into the Marketplace?

As for part 2, you can see from the above that well-programmed programs do not consume CPU cycles in the background. They can, however, cause the system to be sluggish by consuming available RAM. In a real computer, this is offset by "paging", i.e. moving unused blocks of RAM to the harddrive and thereby freeing up RAM for things that will use it. Alternatively, you can just close programs that are unused and which are consuming RAM...

...which is what Windows Phone 7 does anyway...

...

...