1

List specific programming concepts that should code adhere to that it will run in parallel. For example, if a block of code does not change shared state, it should be able to be done on another thread. What other such attributes exist? I would imagine there only to be a small number of such concerns by which to evaluate whether code is a good candidate for parallelization, so what are they? For example SQL Server when creating the execution plans much use these test to decide for each query section whether to run it in serial or allow it to run on another CPU. All I'm looking for is the list of theoretical rules, nothing implementation-specific.

  • 1
  • ...also please note that resource recommendations are off-topic per help center – gnat Feb 22 '17 at 19:40
  • 1
    I don't think this is actually asking for a "list of things" @gnat. It just happens to be worded awkwardly. It's asking for the concrete attributes a module of code must have in order to safely parallelize. That kind of list is finite, unlike the kinds of lost that close reason is talking about. – RubberDuck Feb 22 '17 at 21:59
  • 1
    And that kind of list of not the kind of list that meta is referring to. There is a right answer here. – RubberDuck Feb 22 '17 at 22:57
  • 1
    @RubberDuck The close reason says "or good answers would be too long for this format" - there are entire books written about parallelism and other methods of high performance computing. – Thomas Owens Feb 23 '17 at 0:38