wayground logo

Free Printable Worksheets

NEW

Font size

S
M
L
XL
Worksheets

Багатопотоковість і синхронізація

Total questions: 44

Worksheet time: 22mins

Name
Class
Date
1.

Який клас у C++11 безпосередньо використовується для створення нового потоку виконання?

a)

std::process

b)

std::thread

c)

std::task

d)

std::job

2.

Який із наведених прикладів коректно створює потік, що викликає функцію foo без аргументів?

a)

std::thread t(foo());

b)

std::thread t = foo;

c)

std::thread t(foo);

d)

std::thread t(&foo());

3.

Як правильно приєднати потік t до головного потоку?

a)

t.wait();

b)

join(t);

c)

t.join();

d)

t.close();

4.

Що таке «гонка даних» (data race)?

a)

Паралельне виконання різних програм на одному ПК

b)

Одночасний доступ декількох потоків до спільних даних без належної синхронізації

c)

Ситуація, коли потік зависає через очікування вводу

d)

Помилка компіляції при роботі з потоками

5.

Який клас використовується для взаємного виключення доступу до спільних ресурсів?

a)

std::lock

b)

std::guard

c)

std::mutex

d)

std::atomic_mutex

6.

Який клас дозволяє гнучко блокувати і розблоковувати м’ютекс?

a)

std::flex_lock

b)

std::unique_lock

c)

std::scoped_lock

d)

std::shared_lock

7.

Що буде, якщо викликати join() для потоку, який вже приєднали?

a)

Потік буде перезапущений

b)

Виникне виняток або std::terminate()

c)

Нічого

d)

Потік від’єднається

8.

Що робить метод detach()?

a)

Об’єднує два потоки

b)

Завершує потік

c)

Від’єднує потік для фонової роботи

d)

Призупиняє потік

9.

Яка умова є необхідною для виникнення deadlock?

a)

Відсутність пріоритетів

b)

Наявність атомарних змінних

c)

Взаємне очікування ресурсів

d)

Багато потоків у програмі

10.

Який шаблонний клас використовується для атомарних операцій?

a)

std::atomic

b)

std::volatile

c)

std::sync

d)

std::atomic_mutex

11.

Що забезпечує std::atomic?

a)

Вищу швидкість без гарантій

b)

Гарантію відсутності гонки даних для цієї змінної

c)

Роботу тільки в одному потоці

d)

Автоматичне блокування м’ютекса

12.

Який тип блокування дозволяє кільком читачам одночасно читати дані?

a)

std::mutex

b)

std::shared_mutex

c)

std::atomic_mutex

d)

std::unique_mutex

13.

Що таке thread-safe код?

a)

Код, що компілюється у будь-якій ОС

b)

Код, що працює без гонок даних у багатопотоковому середовищі

c)

Код для потоків CPU

d)

Код без викликів ОС

14.

Який контейнер є thread-safe для одночасного читання?

a)

std::vector

b)

std::map

c)

будь-який контейнер STL

d)

будь-який контейнер, якщо він не змінюється

15.

Яке правило діє для доступу до масиву з різних потоків?

a)

Читання можна виконувати без синхронізації, якщо масив не змінюється

b)

Читання завжди потребує mutex

c)

Писати можна без mutex

d)

Масив завжди thread-safe

16.

Який спосіб перевірки атомарної змінної є коректним?

a)

atomic.get()

b)

atomic.value

c)

static_cast(atomic)

d)

atomic.load()

17.

Як виконати атомарне інкрементування?

a)

x = x + 1

b)

++x

c)

x.fetch_add(1);

d)

x.add(1)

18.

Як розбудити всі потоки, що чекають на condition_variable?

a)

notify_all()

b)

wake_all()

c)

broadcast()

d)

release_all()

19.

Який підхід дозволяє уникати гонок під час читання та запису без м’ютексів?

a)

volatile

b)

atomic

c)

static

d)

inline

20.

Що таке thread pool?

a)

Набір функцій

b)

Група потоків, що перевикористовуються

c)

Набір м’ютексів

d)

Набір atomic-змінних

21.

Який компонент відповідає за балансування завдань у thread-pool?

a)

dispatcher

b)

mutex allocator

c)

pool router

d)

balancer lib

22.

Яка структура даних найчастіше використовується для черги завдань у продюсер-споживачі?

a)

std::stack

b)

std::queue

c)

std::vector

d)

std::map

23.

Яка операція гарантує атомарний обмін значень?

a)

exchange()

b)

swap()

c)

copy()

d)

switch()

24.

Який спосіб гарантує коректну передачу даних між потоками?

a)

Глобальні змінні

b)

Атомарні змінні та синхронізація

c)

Локальні статичні масиви

d)

Масиви без блокувань

25.

Який тип синхронізатора в Windows дозволяє потокам сигналізувати про настання певної події?

a)

Semaphore

b)

Mutex

c)

Event

d)

Timer

26.

Яка функція створює подію (Event) у WinAPI?

a)

CreateSignal

b)

CreateEvent

c)

InitEvent

d)

OpenEventEx

27.

Які два режими роботи Event існують?

a)

Timed / Infinite

b)

Auto-reset / Manual-reset

c)

Normal / Extended

d)

Single / Multi thread

28.

Що робить функція SetEvent()?

a)

Скидає подію в несигнальний стан

b)

Знищує подію

c)

Встановлює подію в сигнальний стан

d)

Очікує на подію

29.

Яка функція переводить Event у несигнальний стан?

a)

ResetEvent

b)

StopEvent

c)

SwitchEvent

d)

UnsigEvent

30.

Що таке Critical Section?

a)

Механізм синхронізації між процесами

b)

Легкий механізм синхронізації потоків у межах одного процесу

c)

Подія ОС

d)

Механізм очікування

31.

Яка функція ініціалізує Critical Section?

a)

InitCS

b)

CreateCriticalSection

c)

InitializeCriticalSection

d)

StartCritical

32.

Яка функція входу в Critical Section?

a)

EnterCriticalSection

b)

LockCritical

c)

WaitCritical

d)

BeginCritical

33.

Яка перевага Critical Section над Mutex?

a)

Може працювати між процесами

b)

Швидша, оскільки працює у користувацькому режимі

c)

Завжди генерує подію пробудження

d)

Має таймаути

34.

Який механізм використовується для обмеження кількості потоків, що можуть одночасно увійти у критичний ресурс?

a)

Event

b)

Mutex

c)

Semaphore

d)

ThreadLimit

35.

Яка функція створює семафор у WinAPI?

a)

CreateSemaphore

b)

InitSemaphore

c)

OpenSem

d)

SemaphoreOpen

36.

Що означає параметр lInitialCount у CreateSemaphore?

a)

Максимальна кількість потоків

b)

Кількість потоків, що чекають у черзі

c)

Початкова кількість доступних ресурсів

d)

Таймаут очікування

37.

Яка функція використовується для очікування одного об’єкта синхронізації?

a)

WaitOne

b)

WaitForObject

c)

WaitForSingleObject

d)

SyncWait

38.

Який результат повертає WaitForSingleObject, якщо об’єкт увійшов у сигнальний стан?

a)

WAIT_INFINITE

b)

WAIT_READY

c)

WAIT_OBJECT_0

d)

WAIT_CONTINUE

39.

Як змусити потік чекати на кілька подій одночасно?

a)

WaitForEvents

b)

WaitForMultipleObjects

c)

MultiWait

d)

ParallelWait

40.

Який параметр WaitForMultipleObjects дозволяє очікувати всі об’єкти?

a)

WAIT_ALL

b)

TRUE

c)

MULTI_ALL

d)

WAIT_EVERY

41.

Що поверне WaitForMultipleObjects, якщо жоден об’єкт не був сигналізований до закінчення таймауту?

a)

WAIT_OBJECT_0

b)

WAIT_FINISHED

c)

WAIT_TIMEOUT

d)

WAIT_DEADLOCK

42.

Який синхронізатор можна використовувати між процесами?

a)

Critical Section

b)

Atomic

c)

Mutex та Semaphore

d)

std::unique_lock

43.

Що відбувається, коли семафор досягає значення 0?

a)

Нові потоки ігноруються

b)

Потоки блокуються, доки інший не виконає ReleaseSemaphore

c)

Семафор перезапускається

d)

Усі потоки завершуються

44.

Яка функція збільшує лічильник семафора?

a)

AddSemaphore

b)

IncSemaphore

c)

ReleaseSemaphore

d)

SetSemaphore

Similar Resources on Wayground