Talk:Concurrent computing: Difference between revisions

Content deleted Content added
about the merge
 
Cewbot (talk | contribs)
m Maintain {{WPBS}} and vital articles: The article is NOT listed in any vital article list page.
 
(39 intermediate revisions by 24 users not shown)
Line 1:
{{WikiProject banner shell|class=C|vital=yes|1=
{{WikiProject Computing |importance=high |software=y |software-importance=High |science=y |science-importance=High}}
{{WikiProject Computer science |importance=high }}
}}
== Merged content from [[Concurrent programming language]] ==
See [[Talk:Concurrent programming language]] for earlier discussions on concurrent programming languages, as well as dicussion on the merge into [[Concurrent computing]]. --[[User:Allan McInnes|Allan McInnes]] 07:03, 27 January 2006 (UTC)
 
 
 
== what is concurrency control ==
 
The [[concurrent computing]] article currently claims
 
:''"However, since both processes perform their withdrawals, the total amount withdrawn will end up being more than the original balance. These sorts of problems with shared resources require the use of concurrency control, or non-blocking algorithms."''
 
Currently, the [[concurrency control]] article seems to be talking *only* about databases.
 
What about all the algorithms listed in [[:Category:Concurrency control]] that involve blocking, but do not involve databases? Algorithms such as [[serializing tokens]] and [[mutual exclusion]] and [[monitor (synchronization)]]?
Aren't they also perfectly valid ways of dealing with this sort of problem?
 
We need to either
* Change this "concurrent computing" article to add another category of solutions, ''"These sorts of problems with shared resources require the use of concurrency control,'' ((new category here that includes monitors, etc.)), ''or non-blocking algorithms."''. Or
* Change the concurrency control article to discuss all blocking algorithms (whether or not they require a database).
* change this "concurrent computing" article to *remove* a category of solutions, ''"These sorts of problems with shared resources require the use of concurrency control"''. And change the "concurrency control" article to discuss all the algorithms in [[:Category:Concurrency control]], blocking and non-blocking.
 
What is a good name for this "new category" (things like monitors, mutexes, serializing tokens, etc)?
 
Or is there a better 4th option?
 
--[[User:70.189.73.224|70.189.73.224]] 15:08, 23 September 2006 (UTC)
 
Monitors, Mutexes, tokens and other forms of resource control are not inherently part of the concurrent paradigm. Concurrency at its core describes a series of actions that regardless of execution time will deterministically conclude (this makes no assumptions about physical hardware and is provable). For any algorithm to be in a concurrent state it has to be non blocking, e.g. no single point of execution has any relation or dependency on any other point of execution. If there is a hardware limitation causing blocking behavior the execution can be freely paused without affecting its state(it can still alter the flow by its action on resources like memory, io control, or processor control) but not block or lock any other point of execution. Future readers should ignore the comment above this as it is clearly written by someone without expertise in concurrency. <!-- Template:Unsigned IP --><small class="autosigned">—&nbsp;Preceding [[Wikipedia:Signatures|unsigned]] comment added by [[Special:Contributions/76.88.186.107|76.88.186.107]] ([[User talk:76.88.186.107#top|talk]]) 13:41, 30 July 2018 (UTC)</small> <!--Autosigned by SineBot-->
 
== Types of concurrency ==
Atleast accordigng to CTM Book the three variants are
* Shared memory concurrency
* Message Passing concurrency
* Dataflow concurrency
(i.e Dataflow is an independent branch)
[[User:Blufox|Blufox]] ([[User talk:Blufox|talk]]) 09:32, 1 October 2008 (UTC)
 
:Dataflow variables are a kind of [[Futures and promises|future]]. The listing of shared memory and message-passing in the article is referring to forms of ''explicit'' communication between threads (as opposed to the presumably "implicit" communication inherent in a future). The implied dichotomy between futures and other methods of communication is perhaps not correct, and it's certainly not well explained in the article. If you'd like to take a stab at rewriting it, I'd be interested to see what you come up with. --[[User:Allan McInnes|Allan McInnes]] <small>([[User talk:Allan McInnes|talk]])</small> 23:24, 1 October 2008 (UTC)
 
== Clearer definition ==
 
Can someone clean up the definition so someone can actually understand the difference between parallel and concurrent computing?
 
Parallel computing is the execution of the exact same algorithm at the same time.
Concurrent computing is the excetuion of multiple, but not necessarilly the same, software at the same time.
 
That's the only difference. Parallel computing IS concurrent computing. But concurrent computing is not always parallel computing. Although unlikely, they don't need to interact either.<small>—The preceding [[Wikipedia:Sign your posts on talk pages|unsigned]] comment was added by [[Special:Contributions/142.167.85.107|142.167.85.107]] ([[User talk:142.167.85.107|talk]]) 07:42, 16 February 2007 (UTC).</small><!-- HagermanBot Auto-Unsigned -->
 
That's wrong. Parallelism is a property of computers, meaning that the control flow executes on multiple pathways in parallel. Concurrency, on the other hand, is a property of programs and programming languages, meaning they have constructs designed to exploit parallelism. Note that concurrent programs can run on ordinary, sequential computers as well -- simply by `simulating' parallelism, for example with multithreading --, and that ordinary sequential programs can exploit parallelism if the compiler performs appropriate transformations/optimizations.
So parallelism and concurrency are closely related, but both express a different view of what one might call the same underlying idea.
The article currently blurs the distinction between parallelism and concurrency, which is very unfortunate as the distinction is widely agreed upon in computer science and very useful from an educational and engineering point of view. Without this distinction, it becomes very difficult to concisely and precisely talk about things like realizing concurrency in the presence or absence of different forms of parallelism. I would be glad if the article could be modified to take this into account; however, I would leave this change to someone who is more familiar with the article.
To reinforce my point, consider the following: The term `hardware parallelism' does not exist in the form of `hardware concurrency', while things like the pi-calculus are consistently referred to as designed for `concurrent' systems (the Wikipedia article itself follows this notion).
 
== Merge with [[Concurrency (computer science)]]? ==
Should this page be merged with [[Concurrency (computer science)]]? --[[User:FishSpeaker|FishSpeaker]] ([[User talk:FishSpeaker|talk]]) 03:15, 14 November 2008 (UTC)
 
:No, I don't think so. The [[Concurrency (computer science)]] article deals (or should deal) with defining the term "concurrency" as it's used in computer science, and discussing both its theoretical (some of which have little to do with concurrent computing) and practical aspects (in overview). The concurrent computing article should cover the practical aspects and applications of concurrency in programs. --[[User:Allan McInnes|Allan McInnes]] <small>([[User talk:Allan McInnes|talk]])</small> 01:43, 13 May 2009 (UTC)
 
Merge with [[Parallel Computing]]? --[[User:Javalenok|Javalenok]] ([[User talk:Javalenok|talk]]) 08:08, 12 May 2009 (UTC)
 
:No. They are different areas and involve different concerns. Concurrent computing involves writing programs that contain independent parts that may (but don't have to be) executed in parallel. For example, sometimes programs are made concurrent just to make them appear more responsive by running time-consuming but non-time-critical tasks "in the background", with no intention of running them on parallel processors. Parallel computing deals with the specific problems of writing programs intended to be run on multiple processors, typically to provide reductions in computation time. In that sense it's a subset of concurrent computing, but typically addresses other concerns in addition to concurrency. --[[User:Allan McInnes|Allan McInnes]] <small>([[User talk:Allan McInnes|talk]])</small> 01:43, 13 May 2009 (UTC)
 
== Transaction processing ==
 
This article suggests that, somehow, various computer languages are necessary for concurrent processing. Transaction processing has been around for at least 50 years and most of the quoted languages didn't exist then. Concurrent programming is more an "environment" (or a set of requirements) rather than a paradigm or language. I don't think a computer language has any real relevance to concurrent programming and the emphasis of the article should be altered to reflect its much more generic nature. Also message passing is not the only means of program communication in concurrent computing environments and task/subtask initiation, termination and database or server interactions & synchronization and frequently rapid response much more significant. <small><span class="autosigned">—Preceding [[Wikipedia:Signatures|unsigned]] comment added by [[User:Kdakin|Kdakin]] ([[User talk:Kdakin|talk]] • [[Special:Contributions/Kdakin|contribs]]) 07:05, 17 May 2010 (UTC)</span></small><!-- Template:Unsigned --> <!--Autosigned by SineBot-->
 
:I'll address your points individually:
:*"''This article suggests that, somehow, various computer languages are necessary for concurrent processing.''" – Where does it suggest that?
:*"''Concurrent programming is more an "environment" (or a set of requirements) rather than a paradigm or language.''" – Could you elaborate, please? And what do you mean by "environment"?
:*"''I don't think a computer language has any real relevance to concurrent programming''" – It definitely does. For example, languages without a formal memory model (like C) will raise many problems when you use shared memory communication; a type system might ensure certain properties, like deadlock-freedom. There is a lot of potential for a programming language to facilitate or hinder concurrent programming.
:*"''Also message passing is not the only means of program communication in concurrent computing environments''" – Where does the article imply this?
:*"''[…] much more significant''" – Much more significant than what?
:[[User:Adrianwn|Adrianwn]] ([[User talk:Adrianwn|talk]]) 17:21, 17 May 2010 (UTC)
 
 
== Overhead question ==
 
After describing shared memory and message passing styles, the article states "Typically (although not always), the ... overhead ... is lower in a message passing system". ?!? Shared memory systems are generally much faster than message-passing systems because the former can bypass data copy, serialization, etc. Was this a typo? If it was intentional, some justification should be given.
[[Special:Contributions/129.55.200.20|129.55.200.20]] ([[User talk:129.55.200.20|talk]]) 19:01, 31 July 2013 (UTC)
 
== Removed the software pipeline example ==
 
I removed the software pipeline example, because I'm not convinced it's an example of concurrency. The present article is doing its best to distinguish concurrency from parallelism (even though [http://talks.golang.org/2012/waza.slide Pike], cited for the confusion between the two, actually connects them), and citing an obviously sequential algorithm (lex, parse, translate, assemble, link) isn't helping that cause. [[User:Qwertyus|Q<small>VVERTYVS</small>]] <small>([[User talk:Qwertyus|hm?]])</small> 21:24, 9 January 2015 (UTC)
 
== PCM Disambiguation ==
 
"Process Communication Model" can also refer to [[Taibi Kahler]]'s Process Communication Model, a model of human communication that was used at NASA during the selection of shuttle astronauts and is now available for HR training. I'm currently researching Kahler and intend expanding his entry and adding one for his PCM.
 
Any objections to a disambiguation page for "Process Communication Model"? If that term is searched it currently links directly to Concurrent Computing.
[[User:Aeon-lakes|Aeon-lakes]] ([[User talk:Aeon-lakes|talk]]) 02:48, 9 April 2015 (UTC)
 
"Process Communication Model" now redirects to [[Taibi Kahler]]. A hatnote on that page provides a link back to this page for disambiguation. A full article for 'Process Communication Model' will follow in due course. Is the disambiguation really needed? I see no mention of 'Process Communication Model' on this page. aeon-lakes 10:37, 10 April 2015 (UTC)
 
A search for "Process Communication Model" now leads to a disambiguation page allowing a choice between [[Concurrent computing]] and the Psychology entry on [[Taibi Kahler]]. I have removed the hatnote on that page as there is no primary article for the computing concept of that name. Will Concurrent computing link to a Process Communication Model primary article in future? If so, I suggest that it becomes "Process Communication Model (computing)" and the psychology one be entitled "Process Communication Model (psychology)". A hatnote on each page would then allow the disambiguation page to be deleted. aeon-lakes 04:38, 11 April 2015 (UTC)
 
== External links modified ==
 
Hello fellow Wikipedians,
 
I have just modified 2 external links on [[Concurrent computing]]. Please take a moment to review [https://en.wikipedia.org/w/index.php?diff=prev&oldid=795099533 my edit]. If you have any questions, or need the bot to ignore the links, or the page altogether, please visit [[User:Cyberpower678/FaQs#InternetArchiveBot|this simple FaQ]] for additional information. I made the following changes:
*Added archive https://web.archive.org/web/20100306171307/http://codespeak.net/py/0.9.2/greenlet.html to http://codespeak.net/py/0.9.2/greenlet.html
*Added archive https://web.archive.org/web/20060128114620/http://vl.fmnet.info/concurrent/ to http://vl.fmnet.info/concurrent/
 
When you have finished reviewing my changes, you may follow the instructions on the template below to fix any issues with the URLs.
 
{{sourcecheck|checked=false|needhelp=}}
 
Cheers.—[[User:InternetArchiveBot|'''<span style="color:darkgrey;font-family:monospace">InternetArchiveBot</span>''']] <span style="color:green;font-family:Rockwell">([[User talk:InternetArchiveBot|Report bug]])</span> 00:30, 12 August 2017 (UTC)
 
== Should BSP be added to the Model section? ==
 
Would it be appropriate for [[Bulk_synchronous_parallel]] to be added to the Models section?
 
[[Special:Contributions/46.208.236.121|46.208.236.121]] ([[User talk:46.208.236.121|talk]]) 04:33, 24 May 2018 (UTC)
 
== Concurrent transmission ==
 
I have removed this paragraph from the lead as there is no support for it in the body of the article and it seems to be discussing a different subject. ~[[User:Kvng|Kvng]] ([[User talk:Kvng|talk]]) 00:22, 14 November 2018 (UTC)
:The concurrent scheduling of data transmission in [[Wireless network]] helps increase in network throughput. Use of [[Directional antennas]] and [[Millimeter-wave]] communication in [[WPAN]] gaining increased interest. Owing to properties of [[Directional antennas]] and [[Millimeter-wave]], the probability of concurrent scheduling of non‐interfering transmissions increases, which results in an immense increase in network throughput. However, the optimum scheduling of concurrent transmission is an NP-Hard problem <ref>{{cite journal|author=Bilal, Muhammad|displayauthors=etal|title=Time‐Slotted Scheduling Schemes for Multi‐hop Concurrent Transmission in WPANs with Directional Antenna|journal=ETRI Journal |url=https://onlinelibrary.wiley.com/doi/full/10.4218/etrij.14.0113.0703 |arxiv=1801.06018}}</ref>.
 
{{reflist-talk}}
 
== What does sheaf have to do with concurrent programming? ==
 
I will remove the link if no one objects. [[User:Digital27|Digital27]] ([[User talk:Digital27|talk]]) 14:17, 14 November 2023 (UTC)