this post was submitted on 13 Oct 2024
95 points (98.0% liked)

Programming

17515 readers
301 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities [email protected]



founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] -4 points 1 month ago* (last edited 1 month ago) (2 children)

A cpu (core) can only do one thing at a time. When you have multiple cores you can do multiple things at the same time. Multitasking in programming sense is a bad term, it's a term more for the masses.

Bit simplified:

  • concurrency: you seem to be doing multiple things at the same time. In reality they are run little by little one after another. Doesn't really speed things up.
  • parallelism: you actually run multiple things at the same time (multiple cpus/cpu cores required). If the code scales properly or is designed to truly run in parallel the speed up is relative to the number of cpus available.

Edit: It's much more complex subject then I've presented here.

[–] FizzyOrange 22 points 1 month ago (2 children)

You missed the point. He understands all these things you tried to explain. The point is that your definition of the word "concurrency" is objectively wrong.

You:

you seem to be doing multiple things at the same time. In reality they are run little by little one after another

The actual meaning of the word "concurrency":

The property or an instance of being concurrent; something that happens at the same time as something else.

Wiktionary actually even disagrees with your pedantic definition even in computing!

(computer science, by extension) A property of systems where several processes execute at the same time.

I suspect that concurrency and parallelism were actually used interchangeably until multicore became common, and then someone noticed the distinction (which is usually irrelevant) and said "aha! I'm going to decide that the words have this precise meaning" and nerds love pedantic "ackshewally"s so it became popular.

[–] nous 12 points 1 month ago

I suspect that concurrency was used back when there were only single threaded cpus, when process scheduling became a thing, to talk about the difference between running one process after another vs interleaving the processes so they appear to be concurrent. Then once true multithreaded programs became a thing they needed a new word to describe things happening at the exact same time instead of only appearing to.

[–] [email protected] 2 points 1 month ago (1 children)

Wikpedia puts it nicely:

"The concept of concurrent computing is frequently confused with the related but distinct concept of parallel computing,[3][4] although both can be described as "multiple processes executing during the same period of time". In parallel computing, execution occurs at the same physical instant: for example, on separate processors of a multi-processor machine, with the goal of speeding up computations—parallel computing is impossible on a (one-core) single processor, as only one computation can occur at any instant (during any single clock cycle).[a] By contrast, concurrent computing consists of process lifetimes overlapping, but execution does not happen at the same instant. "

[–] FizzyOrange 3 points 1 month ago (1 children)

You're still missing the point. We all understand that definition. We're just saying that it is incorrect use of the word "concurrent". Does that make sense? The word "concurrent" means things happening at the same time. It's stupid for programmers to redefine it to mean things not happening at the same time.

[–] [email protected] 1 points 1 month ago
execution = if concurrency then parallelism else multitasking

Simple. Easy. But it doesn't confuse my boss or make everyone angry.

concurrency = if concurrency then concurrency else concurrency 

Now this I can work with.

[–] BB_C 4 points 1 month ago

With hyper-threading and preemption in mind, maybe it's concurrency all the way down 😎 . But we should definitely keep this on the down low. Don't want the pesky masses getting a whiff of this.