Практический параллелизм Java Рисунок 12.1 TimedPutTakeTest - PullRequest
0 голосов
/ 13 октября 2018

На рисунке 12.1 на странице 263 я заметил, что график начинается с 1.

Затем я прочитал следующее на странице 268:

"Поэтому тесты многопоточной производительности обычно должны быть смешаннымис тестами однопоточной производительности, даже если вы хотите измерить только однопоточную производительность. (Эта проблема не возникает в TimedPutTakeTest, поскольку даже в самом маленьком тестовом примере используются два потока.)"

Если наименьший тестовый пример использует 2 потока, откуда поступают данные для 1 потока на рисунке 12.1?

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 19 октября 2018

Метка Количество потоков на рисунке 12.1 вводит в заблуждение.

Фактически это число пар потоков:

...
for (int pairs = 1; pairs <= 128; pairs *= 2) {
...

Каждый TimedPutTakeTest использует 2 потока (один производитель и один потребитель) даже для значения 1.

for (int i = 0; i < nPairs; i++) {
    pool.execute(new PutTakeTest.Producer());
    pool.execute(new PutTakeTest.Consumer());
}

Примечание: Код, о котором идет речь, доступен онлайн .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...