• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C++ consumer函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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



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


示例16: consumer_thread

void consumer_thread(struct buffer *b)  //@ : thread_run
  //@ requires thread_run_data(consumer_thread)(?tobs,b) &*& obs(tobs);
  //@ ensures obs(nil);
{
  //@ open thread_run_data(consumer_thread)(_,_);
  consumer(b);
}
开发者ID:necto,项目名称:verifast,代码行数:7,代码来源:buffer.c


示例17: FrbAlexanderDual

  ideal FrbAlexanderDual(const ideal& I, ConstRefPPMonoidElem pp)
  {
    MustHaveMonomialGens(I, "FrbAlexanderDual");
    const SparsePolyRing polyRing = RingOf(I);
    if (PPM(polyRing) != owner(pp))
      CoCoA_ERROR(ERR::MixedPPMs, "FrbAlexanderDual");

    const std::size_t count = NumIndets(polyRing);

    Frobby::Ideal frobbyIdeal(count);
    ToFrobbyIdeal(frobbyIdeal, I);

    FrobbyMonomialIdealConsumer consumer(polyRing);

    // Set up the point to dualize on. 
    WrappedMpzT* exponentVector = new WrappedMpzT[count];
    try
    {
      for (size_t indep = 0; indep < count; ++indep)
        mpz_set(exponentVector[indep].getMpzT(), mpzref(BigExponent(pp, indep)));

      // Compute Alexander dual using Frobby.
      Frobby::alexanderDual(frobbyIdeal, (mpz_t*)exponentVector, consumer);
    }
    catch (...)
    {
      delete[] exponentVector;
      throw;
    }

    delete[] exponentVector;

    return consumer.getIdealsRef().back();
  }
开发者ID:BrentBaccala,项目名称:CoCoA,代码行数:34,代码来源:ExternalLibs-Frobby.C


示例18: urlRef

ImageTargetFileQuartz::ImageTargetFileQuartz( DataTargetRef dataTarget, ImageSourceRef imageSource, ImageTarget::Options options, const std::string &extensionData )
	: cocoa::ImageTargetCgImage( imageSource, options )
{
	cocoa::SafeCfString uti = cocoa::createSafeCfString( extensionData );

	mImageDest = NULL;
	if( dataTarget->providesFilePath() ) {
		cocoa::SafeCfString pathString = cocoa::createSafeCfString( dataTarget->getFilePath().string() );
		const std::shared_ptr<__CFURL> urlRef( (__CFURL*)::CFURLCreateWithFileSystemPath( kCFAllocatorDefault, pathString.get(), kCFURLPOSIXPathStyle, false ), cocoa::safeCfRelease );
		mImageDest = ::CGImageDestinationCreateWithURL( urlRef.get(), uti.get(), 1, NULL );
	}
	else if( dataTarget->providesUrl() ) {
		std::shared_ptr<__CFURL> urlRef( (__CFURL*)cocoa::createCfUrl( dataTarget->getUrl() ), cocoa::safeCfRelease );
		mImageDest = ::CGImageDestinationCreateWithURL( urlRef.get(), uti.get(), 1, NULL );
	
	}
	else { // we'll wrap a cinder::OStream in a CGDataConsumer for output
		OStreamRef *ostreamRef = new OStreamRef( dataTarget->getStream() );
		::CGDataConsumerCallbacks callbacks;
		callbacks.putBytes = cgDataConsumerPutBytes;
		callbacks.releaseConsumer = cgDataConsumerRelease;
		std::shared_ptr<CGDataConsumer> consumer( ::CGDataConsumerCreate( ostreamRef, &callbacks ), ::CGDataConsumerRelease );
		mImageDest = ::CGImageDestinationCreateWithDataConsumer( consumer.get(), uti.get(), 1, NULL );
	}
	
	if( ! mImageDest )
		throw ImageIoExceptionFailedWrite();
		
	setupImageDestOptions( options );
}
开发者ID:var-const,项目名称:azureland,代码行数:30,代码来源:ImageTargetFileQuartz.cpp


示例19: main

int main()
//@ requires true;
//@ ensures result == 55;
{
  //@ int id_text = create_ghost_cell({1,2,3,4,5,6,7,8,9,10});
  //@ leak ghost_cell(id_text, _);
  struct buffer *buffer = create_buffer(2);
  if (buffer == 0){
    abort();
  }
  
  //@ assert buffer(_, _, ?id_read, ?id_write);
  //@ create_ops(id_text, id_write);
  //@ create_ops(id_text, id_read);
  
  //@ close thread_run_pre(producer)(buffer, thread_data(id_text, id_read, id_write, 0, 10));
  struct thread *thread = thread_start_joinable(producer, buffer);
  int result = consumer(buffer, 100);
  thread_join(thread);
  //@ open thread_run_post(producer)(buffer, _);
  return result;
  //@ leak exists(_);
  //@ leak token(_, _);
  //@ leak token(_, _);
  //@ leak [1/2]buffer(_, _, _, _);
  //@ leak [1/2]buffer(_, _, _, _);
}
开发者ID:amintimany,项目名称:verifast,代码行数:27,代码来源:producer-consumer-weak-iostyle.c


示例20: producer

void* producer(void* ptr) {
	int item;
	
	while (TRUE) {
		item = produce_item();	// generate next item
		if (count == N) {			// call consumer if buffer is full
			consumer(&ptr);	
		}
		insert_item(item);		// put item in buffer
		count = count + 1;			// increment count of items in buffer
		if (count == 1) {			// call consumer if buffer size == 1
			consumer(&ptr);
		}
	}
	return NULL;
}
开发者ID:dlin345,项目名称:cs431Homework,代码行数:16,代码来源:a_singlethread.c



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


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C++ cont函数代码示例发布时间:2022-05-30
下一篇:
C++ consume_skb函数代码示例发布时间:2022-05-30
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap