コード例 #1
0
ファイル: main.cpp プロジェクト: sorokin/malloc-testing
int main(int argc, char *argv[])
{
    std::atomic<bool> keep_working(true);
    concurrent_queue<std::vector<char> > q;

    std::thread producer_thread(std::bind(&producer, std::ref(keep_working), std::ref(q)));

    for (size_t i = 0; i != 100000; ++i)
    {
        std::vector<char> tmp;
        q.wait_and_pop(tmp);
    }

    keep_working.store(false);
    producer_thread.join();

    return EXIT_SUCCESS;
}
コード例 #2
0
int main() {
	// 创建仓库
	auto repository = std::make_shared<Repository>(10);

	// 创建生产者和消费者
	Producer producer(repository);
	Consumer consumer(repository);

	// 分别设定单位工作的耗时
	producer.set_unit_cost(20);
	consumer.set_unit_cost(30);

	auto count = 50;  // 准备生产和消费的产品数量
	std::thread producer_thread([&producer, count] {producer.produce(count); });
	std::thread consumer_thread([&consumer, count] {consumer.consume(count); });

	// 等待线程合并
	producer_thread.join();
	consumer_thread.join();

	return 0;
}
コード例 #3
0
ファイル: buffer_test.c プロジェクト: dennis-musk/ringbuffer
int main(void)
{
	struct ringbuffer *ring_buf;
	pthread_t produce_pid, consume_pid; 

	ring_buf = ringbuffer_create(FIFO_SIZE);
	if (!ring_buf) {
		perror("ringbuffer_create()");
		exit(1);
	}

	printf("multi thread test.......\n");

	produce_pid  = producer_thread((void*)ring_buf);
	consume_pid  = consumer_thread((void*)ring_buf);

	pthread_join(produce_pid, NULL);
	pthread_join(consume_pid, NULL);

	ringbuffer_destroy(ring_buf);

	return 0;
}