What is the mechanism of ensuring that two threads don't execute portions of a program at the same time?
Synchronization
Alignment
Hazard-Checking
Paralellization
Can you pass an integer to a thread as a parameter?
Yes, but only as an Object. It must be cast inside the thread.
Yes.
No.
No, unless it is a foreground thread.
What does the [Threadstatic] attribute in a variable entail?
Each copy of a spawned thread has its own copy of a field.
Each copy of a spawned thread can manipulate the field.
The field can only be modified by one thread at a time.
The field can be modified by the main thread, or any spawned foreground threads.
How would you add a sequence to a Task?
.ContinueWith((FirstTask){ //Func })
.NextTask((FirstTask){ //Func })
.Continue((FirstTask){ //Func })
.Then((FirstTask{ //Func })
Which are acceptable overloads of the .ContinueWith function?
TaskContinueationOptions.OnlyCancelled
TaskContinueationOptions.OnlyOnFaulted
TaskContinueationOptions.OnlyRanToCompletion
TaskContinueationOptions.OnlyBlocked
TaskContinueationOptions.OnlyStopped
TaskContinueationOptions.OnlyCompleted
TaskContinueationOptions.OnlyOnCompletion
What does a task object do?
Spawn a new thread.
Spawn a new process.
Nothing, it's syntactic sugar
Provides a method of managing thread resources.
What principles should you keep in mind while creating an asynchronous method?
Always use await statements.
Avoid returning void.
Be sure to test to ensure a performance increase.
Return a Task or Task<T>
ConcurrentStacks allow enumeration
You havve a lot of items that need to be processed. For each item, you need to perform complex arithmetic that takes up moderate CPU time. Which technique should you use?
Create a Task for each item, and wait till all of them are finished
Use a Parallel.For to process all items concurrently
Use Async/Await to process all items concurrently
Add all items to a BlockingCollection and process them on a thread created by the thread class.
You are creating a complex query that doesn't require any particular order, and you want to run it as parallel. Which method should you use?
AsParallel
AsSequential
AsOrdered
WithDegreeOfParallelism
In an ASP.NET project, your application retrieves data from a remote server and writes the response to a database. Should you use the Async/Await keywords for processing?
Yes, this will free your thread to serve other requests while waiting for a naturally occurring I/O bottleneck.
No, both operations depend on external factors. You must wait before they are finished.
No, in a server application you don't have to use async/await, as the keywords are primarily used in client applications.
Yes, this puts your thread to sleep while waiting for I/O so it uses no CPU time.
What does the volatile keyword do?
Ensures that individual copies of a variable are stored in memory
Disables compiler optimizations that assume a single-threaded application
Ensures a variable is never added to a swap file on a disk
Informs the compiler that the variable will be heavily accessed
Is var++ an atomic operation?