in sample/log_producer_benchmark.c [176:230]
void log_producer_multi_thread(size_t logsPerSecond)
{
logsPerSecond *= 100;
if (log_producer_env_init(LOG_GLOBAL_ALL) != LOG_PRODUCER_OK) {
exit(1);
}
#ifdef GLOBAL_THREAD_FLAG
log_producer_global_send_thread_init(producer_send_thread_count, 100000);
producer_send_thread_count = 0;
#endif
log_producer * producers[MUTLI_PRODUCER_COUNT];
log_producer_client * clients[MUTLI_PRODUCER_COUNT];
multi_write_log_param param[MUTLI_PRODUCER_COUNT];
int i = 0;
for (; i < MUTLI_PRODUCER_COUNT; ++i) {
producers[i] = create_log_producer_wrapper(on_log_send_done);
if (producers[i] == NULL)
{
printf("create log producer by config file fail \n");
exit(1);
}
clients[i] = get_log_producer_client(producers[i], NULL);
if (clients[i] == NULL)
{
printf("create log producer client by config file fail \n");
exit(1);
}
param[i].send_count = logsPerSecond;
param[i].client = clients[i] ;
}
pthread_t allThread[MUTLI_THREAD_COUNT];
for (i = 0; i < MUTLI_THREAD_COUNT; ++i)
{
pthread_create(&allThread[i], NULL, write_log_thread, ¶m[i % MUTLI_PRODUCER_COUNT]);
}
for (i = 0; i < MUTLI_THREAD_COUNT; ++i)
{
pthread_join(allThread[i], NULL);
}
aos_error_log("All thread done");
for (i = 0; i < MUTLI_PRODUCER_COUNT; ++i) {
destroy_log_producer(producers[i]);
}
log_producer_env_destroy();
}