## =========================
SET(
- EXAMPLES_PROGRAMS
+ EXAMPLES_PROGRAMS_ONLY_EXTENSIONS
+ example_TestQuadSplitter
+ )
+
+FOREACH(prog ${EXAMPLES_PROGRAMS_ONLY_EXTENSIONS})
+ ADD_EXECUTABLE(${prog} ${prog}.cxx)
+ TARGET_LINK_LIBRARIES(${prog} cpExtensions)
+ENDFOREACH(prog)
+
+SET(
+ EXAMPLES_PROGRAMS_ONLY_INTERFACE
example_TestParameters
example_LoadPlugins
- example_ReadWriteImage
- example_View2DImage
- example_Test_async
+ )
+
+FOREACH(prog ${EXAMPLES_PROGRAMS_ONLY_INTERFACE})
+ ADD_EXECUTABLE(${prog} ${prog}.cxx)
+ TARGET_LINK_LIBRARIES(${prog} cpPlugins_Interface)
+ENDFOREACH(prog)
+
+SET(
+ EXAMPLES_PROGRAMS_WITH_PLUGINS
+ #example_ReadWriteImage
+ #example_MPR
+ #example_View2DImage
##example_MarchingCubes
##example_OtsuFilter
##example_RGBImageToHSVChannels
##example_MPR
)
-
-FOREACH(prog ${EXAMPLES_PROGRAMS})
+FOREACH(prog ${EXAMPLES_PROGRAMS_WITH_PLUGINS})
ADD_EXECUTABLE(
${prog}
${prog}.cxx
NOPLUGINS_EXAMPLES_PROGRAMS
example_BaseInteractorStyle
example_ContourWidget
++ example_Test_async
## example_Test_DoubleClick
## example_ExtractDICOMSeries
## example_ImageGaussianModelEstimator
--- /dev/null
-#ifdef WIN32
- Sleep(2000);
-#else
- usleep(2000 * 1000);
-#endif
+ #include <future>
+ #include <iostream>
+ #ifdef WIN32
+ #include <windows.h>
+ #else
+ #endif
+
++#ifdef WIN32
++#define mysleep Sleep(2000);
++#else
++#define mysleep usleep(2000);
++#endif
++
+ class Test
+ {
+ private:
+ std::vector<int> state;
+ std::vector<int>::iterator it;
+ std::vector<bool> isAvailable;
+ public:
+ Test()
+ {
+ this->it = this->state.begin();
+ }
+
+ void called_from_async()
+ {
-#ifdef WIN32
- Sleep(2000);
-#else
- usleep(2000 * 1000);
-#endif
- //std::cout << "Async call" << std::endl;
++
+ std::cout << "called from async" << std::endl;
+ this->state.insert(this->it ,10);
+ }
+
+ std::string returned_from_async() {
++ mysleep;
+ return "Async call";
+ }
+
+ template<class ASYNC>
+ void print_results(ASYNC &f)
+ {
+ std::string result = f.get();
+ std::cout << result.c_str() << std::endl;
+ }
+
+ int getState(int pos)
+ {
+ return this->state.at(pos);
+ }
+
+ int getStateSize()
+ {
+ return this->state.size();
+ }
+ };
+
+ int main() {
+ Test test;
+ std::future<void> result(std::async(&Test::called_from_async, &test));
+
+ auto f1 = std::async(std::launch::async, &Test::returned_from_async, &test);
+
+ std::cout << "Message from main." << std::endl;
+ do
+ {
+ std::cout << test.getStateSize();
+ } while (test.getStateSize()<1);
+
+ #ifdef _DEBUG
+ auto i = 0;
+ std::cout << "wait for close";
+ std::cin >> i;
+ #endif
+
+ return 0;
+
+ }