Multi-threading 多线程作业辅导

多线程程序辅导 辅导多线程Multi-threading编程作业

A multithreaded malloc

A multithreaded malloc

1 Introduction
Your task in this assignment is to implement a multithreaded malloc i.e. we
should be able to use it in a multithreaded application. The basic require-
ment is of course that it is thread safe, that it still works even if two threads
us it at the same time. This is of course very easy to solve by having one
central lock that protects any data structures that are used by the module.
It is a bit harder to allow multiple threads to actually use the malloc module

COMP2355 PA3 solution



In this assignment you will perform a parallel breadth-first search (BFS) of the 4×3 Sliding Tile state space. The result of this search will be that the distance of every state in the state space from the initial configuration will be stored in an array. In C++ you can only access items in an array using an integer offset. Thus, we cannot directly map between our Sliding Tile puzzle class and an element in the depth array. Luckily, there is a 1-to-1 mapping between states in the puzzle and integers between 0 and 12!/2. We can perform this mapping using what are called “Ranking” and “Unranking” functions. A ranking function will convert a state into an integer, and an unranking function will convert an integer into the corresponding state. T

COMP2355 lab11 solution


In this lab you’ll implement a program which uses multiple threads to divide up a simple problem

into independent sub-tasks. Source code for this lab is supplied in .

Write the function ThreadedSum which is declared as:

double ThreadedSum(int numThreads, size_t arraySize);

You’ll find an empty function definition in main.cpp in the supplied source code. This function

should :

1. Allocate an array on the heap of type double with arraySize elements . This may get too large

for the stack, so make sure you allocate it on the heap (free store).

2. Run numThreads threads, each of which initializes an approximately equal portion of the

array. For example, if numThreads is 8, each thread should initialize 1⁄8 of the array. Make

sure you handle round-off correctly if arraySize is not an even multiple of numThreads. Each

element of the array should be initialized to the square root of the index of the element.

3. Wait for all of the initialization threads to complete,

COMP2355 lab12 solution


Synchronizing Multiple Threads

In this lab you will convert your templated LList class to a SharedQueue class (you may adapt your own code or use the Lab 9 Solution). The shared queue can be safely used by many different threads without causing memory corruption. You can download the source code for this lab from Create a project called Lab12 and add the source code from t