当前位置: 首页>>代码示例>>C++>>正文


C++ consumer函数代码示例

本文整理汇总了C++中consumer函数的典型用法代码示例。如果您正苦于以下问题:C++ consumer函数的具体用法?C++ consumer怎么用?C++ consumer使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。


在下文中一共展示了consumer函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: prodCons

void prodCons(struct storage *sFarsz, struct storage *sCiasto, struct storage *sPierogi, int microSecPeriod)
{
    int prior;

    while (1)
    {
        /// get farsz and ciasto
        if(consumer(sFarsz, 0) == 1)
        {
            prior = 1;
        }
        else prior = 0;

        consumer(sCiasto, 0);

        /// production time
        usleep(microSecPeriod);

        /// insert pieroga
        if(prior == 1)
        {
            priorProducer(sPierogi, 0);
        }
        else producer(sPierogi, 0);
    }
}
开发者ID:Zwirek009,项目名称:MWSemaphores,代码行数:26,代码来源:queue.c

示例2: main

int main(int argc ,char **argv)
{
	if(pipe(pipe_fd) < 0)
	{
		printf("Pipe creat error");
		exit(-1);
    }
	else
	{
		puts("Pipe is created successfully!");
		if((pid1 =fork())==0)
			producer(1);
		if((pid2 =fork())==0)
			producer(2);
		if((pid3 =fork())==0)
			consumer(1);
		if((pid4 =fork())==0)
			consumer(2);
	}
	close(pipe_fd[0]);
	close(pipe_fd[1]);

	int i,pid,status;
	for(i=0;i<4;i++)
		pid=wait(&status);
	exit(0);

}
开发者ID:ichenhm,项目名称:OSexpr,代码行数:28,代码来源:fork.cpp

示例3: t

Pass::Status PassManager::Run(IRContext* context) {
  auto status = Pass::Status::SuccessWithoutChange;

  // If print_all_stream_ is not null, prints the disassembly of the module
  // to that stream, with the given preamble and optionally the pass name.
  auto print_disassembly = [&context, this](const char* preamble, Pass* pass) {
    if (print_all_stream_) {
      std::vector<uint32_t> binary;
      context->module()->ToBinary(&binary, false);
      SpirvTools t(SPV_ENV_UNIVERSAL_1_2);
      std::string disassembly;
      t.Disassemble(binary, &disassembly, 0);
      *print_all_stream_ << preamble << (pass ? pass->name() : "") << "\n"
                         << disassembly << std::endl;
    }
  };

  SPIRV_TIMER_DESCRIPTION(time_report_stream_, /* measure_mem_usage = */ true);
  for (auto& pass : passes_) {
    print_disassembly("; IR before pass ", pass.get());
    SPIRV_TIMER_SCOPED(time_report_stream_, (pass ? pass->name() : ""), true);
    const auto one_status = pass->Run(context);
    if (one_status == Pass::Status::Failure) return one_status;
    if (one_status == Pass::Status::SuccessWithChange) status = one_status;

    if (validate_after_all_) {
      spvtools::SpirvTools tools(target_env_);
      tools.SetMessageConsumer(consumer());
      std::vector<uint32_t> binary;
      context->module()->ToBinary(&binary, true);
      if (!tools.Validate(binary.data(), binary.size(), val_options_)) {
        std::string msg = "Validation failed after pass ";
        msg += pass->name();
        spv_position_t null_pos{0, 0, 0};
        consumer()(SPV_MSG_INTERNAL_ERROR, "", null_pos, msg.c_str());
        return Pass::Status::Failure;
      }
    }

    // Reset the pass to free any memory used by the pass.
    pass.reset(nullptr);
  }
  print_disassembly("; IR after last pass", nullptr);

  // Set the Id bound in the header in case a pass forgot to do so.
  //
  // TODO(dnovillo): This should be unnecessary and automatically maintained by
  // the IRContext.
  if (status == Pass::Status::SuccessWithChange) {
    context->module()->SetIdBound(context->module()->ComputeIdBound());
  }
  passes_.clear();
  return status;
}
开发者ID:MikePopoloski,项目名称:bgfx,代码行数:54,代码来源:pass_manager.cpp

示例4: main

int main()
{int l=3;
int k;
while(l)
{printf("\nEnter what you wanna do\n0.Exit\t1.Produce\t2.Consume\n");
scanf("%d",&l);
switch(l)
{case 1:while(1)
{
      pr=1;
      if(producer()==1)
printf("\nItem produced");
printf("\nProduce one more:1.Yes\t:");
scanf("%d",&k);
if(k==1)
continue;
prod=-1;
callp=-1;
if(callc!=-1||cons!=0)
consumer();
prod=0;
if(k!=1)
break;
}
break;
case 2:while(1)
{
     cs=1;
     if(consumer()==1)
printf("\nItem consumption process over");
printf("\nConsume one more:1.Yes\t:");
scanf("%d",&k);
if(k==1)
continue;
callc=-1;
cons=-1;
if(callp!=-1||prod!=0)
producer();
cons=0;
if(k!=1)
break;
}
break;
}
}


return 0;         
         }
开发者ID:asegid,项目名称:Operating-Systems-1,代码行数:49,代码来源:Boundedbuffersemaphore.c

示例5: switchtoconsumer

                    int switchtoconsumer()
{
    int sw;
    if(callp==-1)
    callp=0;
    printf("\nDo you wanna switch to consume : 1.Yes\t2.No:");
scanf("%d",&sw);
if(sw==1)
{if(callp==1)
{
callc=0;
return 1;}
else
{
         callp=1;
         if(callc==1)
return 1;
else
   {            
               if(cs==0)
              cs=1;
             consumer();
               }
               
 }        }
 return 0;

}
开发者ID:asegid,项目名称:Operating-Systems-1,代码行数:28,代码来源:Boundedbuffersemaphore.c

示例6: main

int main(int argc, char *argv[])
{
    srand(time(NULL));
    int i, fd, result;
    int *file_memory;  
    pid_t child;
    child = fork();
    char* program = "./MemMapConsum";;
    char* arglist[] = {"./MemMapConsum", "MemMapConsum", NULL} ;

    fd = open(FILEPATH, O_RDWR | O_CREAT | O_TRUNC, (mode_t)0600);
    lseek(fd, FILE_LENGTH+1, SEEK_SET);
    write(fd, "", 1);

    file_memory = (int*)mmap(0, FILE_LENGTH, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);


    if(child == 0){
        for (i = 1; i <=N; ++i) {
           file_memory[i] = produce_item(); 
        }
    } else {
        wait();
        execvp(program, arglist);
        consumer();
        
    }

    close(fd);
    munmap(file_memory, FILE_LENGTH);
    return 0;
}
开发者ID:CheriPai,项目名称:cs431-hw,代码行数:32,代码来源:MemMapProd.c

示例7: main

int main()
{   
	mqd_t qid;
	struct mq_attr attr;
	char* qname="/msgq";   /*队列的名字*/
	memset(&attr,0,sizeof(attr));
	attr.mq_maxmsg=5;
	attr.mq_msgsize=MSGSIZE;
	qid=mq_open(qname,O_CREAT|O_RDWR,0666,&attr);  /*创建队列*/
	if(qid<0){
		perror("mq_open");
		return -1;
	}
	if(!fork()){
		producer(qid);
		exit(0);
	}
	
	wait(NULL);
	
	consumer(qid);
	
	mq_unlink(qname);
	
	return 0;
}
开发者ID:winlin,项目名称:Unix-C-Code,代码行数:26,代码来源:pmsgq.c

示例8: fifo_test

void fifo_test(Buffer* buffer)
{
    // Start of timing.
    boost::timer::auto_cpu_timer progress;

    // Initialize the buffer with some values before launching producer and consumer threads.
    for (unsigned long i = queue_size / 2L; i > 0; --i)
    {
#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x581))
        buffer->push_front(Buffer::value_type());
#else
        buffer->push_front(BOOST_DEDUCED_TYPENAME Buffer::value_type());
#endif
    }

    // Construct the threads.
    Consumer<Buffer> consumer(buffer);
    Producer<Buffer> producer(buffer);

    // Start the threads.
    boost::thread consume(consumer);
    boost::thread produce(producer);

    // Wait for completion.
    consume.join();
    produce.join();

    // End of timing.
    // destructor of boost::timer::auto_cpu_timer will output the time to std::cout.

}
开发者ID:boostorg,项目名称:circular_buffer,代码行数:31,代码来源:circular_buffer_bound_example.cpp

示例9: main

int main(int /*argc*/, char ** /*argv*/)
{
  PoorMockSecondEdition mock;

  MOCKPP_STD_NS::cout << "Tests starting" << MOCKPP_STD_NS::endl;

  MOCKPP_TRY
  {
    // Run Consumer object
    Consumer consumer(&mock);
    mock.open_counter.setExpected(1);
    mock.read_counter.setExpected(4);
    mock.close_counter.setExpected(5);
    consumer.load();
    mock.verify();

    consumer.process();
    mock.open_counter.setExpected(6);
    mock.write_counter.setExpected(9);
    mock.close_counter.setExpected(10);
    consumer.save();
    mock.verify();

    MOCKPP_STD_NS::cout << "Tests finished" << MOCKPP_STD_NS::endl;

  }
  MOCKPP_CATCH(MOCKPP_STD_NS::exception &ex)
  {
#ifndef MOCKPP_NO_EXCEPTIONS
    MOCKPP_STD_NS::cout << MOCKPP_STD_NS::endl
              << "Error occured.\n" << ex.what() << MOCKPP_STD_NS::endl
              << MOCKPP_STD_NS::endl;
#endif
    return 1;
  }
开发者ID:yadickson,项目名称:mockpp-debs,代码行数:35,代码来源:poormock-se.cpp

示例10: test_intermittent

void test_intermittent() {
    sc::blocking_queue<MyMovableStr> queue{};
    std::thread producer([&] {
        TestStringGenerator gen{};
        for (size_t i = 0; i < 10; i++) {
            std::string str = gen.generate(42);
            queue.emplace(std::move(str));
        }
        std::this_thread::sleep_for(std::chrono::milliseconds{200});
        for (size_t i = 10; i < 20; i++) {
            std::string str = gen.generate(42);
            queue.emplace(std::move(str));
        }
        std::this_thread::sleep_for(std::chrono::milliseconds{300});
        for (size_t i = 20; i < ELEMENTS_COUNT; i++) {
            std::string str = gen.generate(42);
            queue.emplace(std::move(str));
        }
    });
    std::thread consumer([&] {
        for (size_t i = 0; i < ELEMENTS_COUNT; i++) {
            MyMovableStr el{""};
            bool success = queue.take(el);
            slassert(success);
            slassert(42 == el.get_val().size());
        }
    });
    producer.join();
    consumer.join();
}
开发者ID:staticlibs,项目名称:staticlib_containers,代码行数:30,代码来源:blocking_queue_test.cpp

示例11: main

int 
main (int argc, char** argv)
{
  int buff_size = BUFFER_SIZE;
  if (argc == 2)
  {
    buff_size = atoi (argv[1]);
    std::cout << "Setting buffer size to " << buff_size << " frames " << std::endl;
  }
  else
  {
    std::cout << "Using default buffer size of " << buff_size << " frames " << std::endl;
  }
  buff.setCapacity (buff_size);
  std::cout << "Starting the producer and consumer threads..." << std::endl;
  std::cout << "Press Ctrl-C to end" << std::endl;
  boost::thread producer (grabAndSend);
  boost::this_thread::sleep (boost::posix_time::seconds (2));
  boost::thread consumer (receiveAndProcess);
  boost::thread consumer2 (receiveAndProcess);
  boost::thread consumer3 (receiveAndProcess);
  signal (SIGINT, ctrlC);
  producer.join ();
  {
    boost::mutex::scoped_lock io_lock (io_mutex);
    PCL_WARN ("Producer done\n");
  }
  consumer.join ();
  consumer2.join();
  consumer3.join();

  PCL_WARN ("Consumers done\n");
  return (0);
}
开发者ID:hobu,项目名称:pcl,代码行数:34,代码来源:record_maps_rgb.cpp

示例12: pop

    bool pop(U & ret)
    {
        BOOST_STATIC_ASSERT((lslboost::is_convertible<T, U>::value));
        detail::consume_via_copy<U> consumer(ret);

        return consume_one(consumer);
    }
开发者ID:cboulay,项目名称:labstreaminglayer,代码行数:7,代码来源:stack.hpp

示例13: main

int main(int argc, char *argv[]) {
	int fds[2] = {0};
	int th = 0;

	int ret = pipe(fds);
	if (ret < 0) {
		printf("pipe failed\n");
		return -1;
	}

	th = fork();

	if (th < 0) {
		printf("fork failed\n");
		return -1;

	} else if (th == 0) {
		product(fds);
	
	} else {
		consumer(fds);
	
	}

	wait(NULL);

	return 0;
}
开发者ID:Jeff-Yu,项目名称:fju,代码行数:28,代码来源:pipe.c

示例14: consumer

void TestConcurrentLockingQueue::testConcurrentLockingQueueExhibitsCorrectBehaviourInMultiProducerSetting(void)
{
    const size_t length = 2000;
    const size_t producerThreadCount = 4;
    std::vector<size_t> resVec;
    ConcurrentLockingQueue<size_t> queue;
    size_t expectedVecLength = 0;

    std::vector<std::thread> producerPool;
    for (size_t i = 0; i < producerThreadCount; i++)
    {
        producerPool.push_back(std::thread(produce, &queue, length));
    }

    expectedVecLength = length*producerPool.size();
    std::thread consumer(consume, &resVec, &queue, expectedVecLength);

    for (size_t i = 0; i < producerPool.size(); i++)
    {
        producerPool[i].join();
    }
    consumer.join();

    //check size
    CPPUNIT_ASSERT(expectedVecLength == resVec.size());
    std::sort(resVec.begin(), resVec.end());
    // check if all values are in vector now
    for (size_t i = 0; i < length; i++)
    {
        for (size_t j = 0; j < producerThreadCount; j++)
        {
            CPPUNIT_ASSERT(i == resVec[i*producerThreadCount + j]);
        }
    }
}
开发者ID:RochauD,项目名称:Clusterer,代码行数:35,代码来源:TestConcurrentLockingQueue.cpp

示例15: main

int main()
{
  boost::thread producer(product);
  boost::thread consumer(consume);
  producer.join();
  consumer.join();
}
开发者ID:yuppie,项目名称:ThreadProdCons,代码行数:7,代码来源:main.cpp


注:本文中的consumer函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。