📄 time_new_thread.cxx
字号:
/* ==================================================================== * The Vovida Software License, Version 1.0 * * Copyright (c) 2000 Vovida Networks, Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The names "VOCAL", "Vovida Open Communication Application Library", * and "Vovida Open Communication Application Library (VOCAL)" must * not be used to endorse or promote products derived from this * software without prior written permission. For written * permission, please contact vocal@vovida.org. * * 4. Products derived from this software may not be called "VOCAL", nor * may "VOCAL" appear in their name, without prior written * permission of Vovida Networks, Inc. * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND * NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL VOVIDA * NETWORKS, INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT DAMAGES * IN EXCESS OF $1,000, NOR FOR ANY INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. * * ==================================================================== * * This software consists of voluntary contributions made by Vovida * Networks, Inc. and many individuals on behalf of Vovida Networks, * Inc. For more information on Vovida Networks, Inc., please see * <http://www.vovida.org/>. * */static const char* const time_new_thread_cxx_Version = "$Id: time_new_thread.cxx,v 1.9 2000/12/18 23:42:38 bko Exp $";#include "time_functions.h"#include <iostream>#include <string>#include <deque>#include <list>#include "VThread.h"// check out them new sclass allocClass{ private: string fake; deque < int > fakeDeque; list < int > fakeList;};const int iteration_count = 200000;struct thing{ VThread* thread; int type;};void* create_5000_objects(void* x/*start*/){ int i = 0; allocClass* p; struct timeval start; struct thing* me; me = reinterpret_cast < struct thing* > (x); start_time(&start); for (i = 0; i < iteration_count; i++) { p = new allocClass; delete p; } end_rate(&start, iteration_count); if (!me->type) { me->thread->exit(); } return 0;}int main(void){ int errNum; struct timeval my_time; start_time(&my_time); VThread processThread1; struct thing thing1, thing2, thing3; thing1.type = 0; thing1.thread = &processThread1; errNum = processThread1.spawn(&create_5000_objects, (void*) & thing1); if (errNum > 0) { cerr << "Cannot create asyncProcessData thread: " << strerror(errNum) << endl; exit(0); } VThread processThread2; thing2.type = 0; thing2.thread = &processThread2; errNum = processThread2.spawn(&create_5000_objects, (void*) & thing2); if (errNum > 0) { cerr << "Cannot create asyncProcessData thread: " << strerror(errNum) << endl; exit(0); } processThread1.join(); processThread2.join(); end_rate(&my_time, 2 * iteration_count); start_time(&my_time); // for(int i = 0 ; i < 2 ; i++) // { thing3.type = 0; thing3.thread = 0; create_5000_objects(&thing3); create_5000_objects(&thing3); // } end_rate(&my_time, 2 * iteration_count); exit(0);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -