void log_producer_multi_thread()

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, &param[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();

}