Читаем Programming with POSIX® Threads полностью

66 result *= power->value;

67 free (arg);

68 }

69

70 /*

71 * Thread start routine that issues work queue requests.

72 */

73 void *thread_routine (void *arg)

74 {

75 power_t *element;

76 int count;

77 unsigned int seed = (unsigned int)time (NULL);

78 int status;

79

80 /*

81 * Loop, making requests.

82 */

83 for (count = 0; count < ITERATIONS; count++) {

84 element = (power_t*)malloc (sizeof (power_t));

85 if (element == NULL)

86 errno_abort ("Allocate element");

87 element->value = rand_r (&seed) % 20;

88 element->power = rand_r (&seed) % 7;

89 DPRINTF ((

90 "Request: %d^%d\n",

91 element->value, element->power));

92 status = workq_add (&workq, (void*)element);

93 if (status != 0)

94 err_abort (status, "Add to work queue");

95 sleep (rand_r (&seed) % 5);

96 }

97 return NULL;

98 } 99

100 int main (int argc, char *argv[])

101 {

102 pthread_t thread_id;

103 engine_t *engine;

104 int count = 0, calls = 0;

105 int status;

106

107 status = pthread_key_create (&engine_key, destructor);

108 if (status != 0)

109 err_abort (status, "Create key");

110 status = workq_init (&workq, 4, engine_routine);

111 if (status != 0)

112 err_abort (status, "Init work queue");

113 status = pthread_create (&thread_id, NULL, thread_routine, NULL);

114 if (status != 0)

115 err_abort (status, "Create thread");

116 (void)thread_routine (NULL);

117 status = pthread_join (thread_id, NULL);

118 if (status != 0)

119 err_abort (status, "Join thread");

120 status = workq_destroy (&workq);

121 if (status != 0)

122 err_abort (status, "Destroy work queue"); 123

124 /*

125 * By now, all of the engine_t structures have been placed

126 * on the list (by the engine thread destructors), so we

127 * can count and summarize them.

128 */

129 engine = engine_list_head;

130 while (engine != NULL) {

131 count++;

132 calls += engine->calls;

133 printf ("engine %d: %d calls\n", count, engine->calls);

134 engine = engine->link;

135 }

136 printf ("%d engine threads processed %d calls\n",

137 count, calls);

138 return 0;

139 }

<p>7.3 But what about existing libraries?</p>

"The great art of riding, as I was saying is—

to keep your balance properly. Like this, you know—" He let go the bridle, and stretched out both his arms to

show Alice what he meant, and this time he fell flat on

his back, right under the horse's feet.

Lewis Carroll, Through the Looking-Glass
Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных