introduction to concurrency and parallelism some terminology the world of concurrent programming is full of terminology that you may not be familiar with some of those terms and concepts are outlined belowasynchronous versus synchronous invocations most of the methodfunction or procedure invocations you will have seen in programming represent synchronous invocations synchronous method or function call is one which blocks the calling code from executing until it returns such calls are typically within single thread of execution asynchronous calls are ones where the flow of control immediately returns to the callee and the caller is able to execute in its own thread of execution allowing both the caller and the call to continue processing non-blocking versus blocking code blocking code is term used to describe the code running in one thread of executionwaiting for some activity to complete which causes one of more separate threads of execution to also be delayed for exampleif one thread is the producer of some data and other threads are the consumers of that datathen the consumer treads cannot continue until the producer generates the data for them to consume in contrastnon-blocking means that no thread is able to indefinitely delay others concurrent versus parallel code concurrent code and parallel code are similarbut different in one significant aspect concurrency indicates that two or more activities are both making progress even though they might not be executing at the same point in time this is typically achieved by continuously swapping competing processes between execution and non-execution this process is repeated until at least one of the threads of execution (threadshas completed their task this may occur because two threads are sharing the same physical processor with each is being given short time period in which to progress before the other gets short time period to progress the two threads are said to be sharing the processing time using technique known as time slicing parallelism on the other hand implies that there are multiple processors available allowing each thread to execute on their own processor simultaneously online resources see the following online resources for information on the topics in this on concurrency machines