123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- #include <thread>
- #include <chrono>
- #include "write-copy.h"
- #ifdef _TEST_
- struct card
- {
- int id;
- card(int _id):id(_id){}
- };
- struct card_list:single_base<card_list,int,std::shared_ptr<card>>
- {
- void accept(visitor<std::shared_ptr<card>>&v)
- {
- for(std::pair<int,std::shared_ptr<card>> me:m_map)
- {
- v.visit(me.second);
- while(true)
- {
- printf("%p--xxxxxx---\n",this);
- std::this_thread::sleep_for(std::chrono::milliseconds(500));
- }
- }
- }
- };
- struct visit_log:visitor<std::shared_ptr<card>>
- {
- bool visit(std::shared_ptr<card> c)
- {
- printf("%d\n",c->id);
- return true;
- }
- };
- template<> std::shared_ptr<card_list> single_base<card_list,int,std::shared_ptr<card>>::m_instance=std::make_shared<card_list>();
- void run()
- {
- visit_log vl;
- card_list::instance()->accept(vl);
- /*
- while(true)
- {
- printf("111111111111\n");
- std::this_thread::sleep_for(std::chrono::milliseconds(500));
- }
- */
- }
- int main()
- {
- std::vector<std::shared_ptr<card_list>> v;
- std::thread th(run);
- for(int i=0;i<100;i++)
- {
- card_list::instance()->add(i,std::make_shared<card>(i));//每次生成一个对象
- printf("%d %p\n",i,card_list::instance().get());
- // v.push_back(card_list::instance());
- }
- for(int i=0;i<100;i++)
- {
- // printf("%d %p\n",i,v[i].get());
- }
- th.join();
- //card_list::instance()->accept(vl);
- return 0;
- }
- #endif
|