Skip to content

a530788140/mergesort-concurrent

 
 

Repository files navigation

concurrent merge sort on singly-linked list

mergesort-concurrent implements merge sort on linked list concurrently.

Tasks give a framework for studying concurrency:

  • Restricting number of threads in thread pools.
  • Relaxing task boundaries so that overhead associated with task management is kept reasonable.

The strategy to implement merge sort concurrently:

  • Make recursive calls tasks
  • No need to wait for tasks to complete after spawning them
    • Tasks that creates sub-tasks can be allowed to terminated

Build

 make

Run

 ./sort [thread count] [data count]
    Then input integer data line-by-line

bench

 make bench
    Generate uniform distributed test files and use different thread number to sort test files

plot

 make plot
    Use gnuplot to plot execution time of thread number

Install customized Git pre-commit hooks

Git hooks are scripts that Git executes before or after events such as: commit, push, and receive. We provide the customized hooks for spelling errors and software quality validation while the change is about to be committed.

        Before installing the Git hooks, please ensure [astyle](http://astyle.sourceforge.net/) and [cppcheck](http://cppcheck.sourceforge.net/) installed. You can install the packages via `apt-get`:
                    ```sh
                    sudo apt-get install astyle cppcheck
                    ```

                    Install Git pre-commit hook to check C/C++ source file format and quality:
                    ```sh
                    scripts/install-git-hooks
                    ```

Licensing

                    `mergesort-concurrent` is freely redistributable under the two-clause BSD
                    License. Use of this source code is governed by a BSD-style license that can
                    be found in the `LICENSE` file.

About

merge sort on singly-linked list utilzing POSIX Thread

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 81.2%
  • Shell 10.0%
  • Makefile 6.9%
  • Gnuplot 1.9%