-
Сформировать в памяти двусвязный список определенного размера, содержащий случайные значения, которые следует получить из генератора случайных чисел, встроенного в ядро Linux.
-
Запустить два потока (threads).
-
Потоку №1: начиная с головы списка подсчитывать количество нулевых битов в значениях элементов и количество пройденных элементов, освобождать учтённый элемент сразу после учёта.
-
Потоку №2: начиная с хвоста списка подсчитывать количество единичных битов в значениях элементов и количество пройденных элементов, освобождать учтённый элемент сразу после учёта.
-
-
По окончании элементов списка вывести результаты подсчёта.
-
Обеспечить однократную обработку каждого элемента списка (каждый должен быть учтён, но только один раз, одним из потоков).
-
Желательно, чтобы в потоках работали не две разные функции, а одна, принимающая особенности работы через аргументы.
make
- compile and run execution
make print
- compile and run execution with printing list
make memory
- compile and run execution with memory check by valgrind
make real_random
- compile and run execution with usage /dev/random
which is "more random"
make debug
- compile and run execution with detailed logging