parallel_invoke of lightweight tasks

Category: visual studio parallelcpp

Question

edwardyu on Thu, 11 Apr 2013 09:49:23


I have been reading the VS2010 concurrency runtime walkthrough :-

http://msdn.microsoft.com/en-us/library/vstudio/ee624185(v=vs.100).aspx

It said lightweight tasks has less overhead than PPL parallel_invoke. If my parallel_invoke tasks do not require load-balancing nor cancellation, how can we adapt the concurrency runtime to the following example to get maximum performance :-

parallel_invoke(      
         [&] {          	
         	PPL_searchRoot(2, spboard, alpha, beta, size, m_depth, movetab, incheck, 
         	                   m_bestmove, old_alpha, root_nodes, nUnchanged, pv_i   
         	                   );        	                    
         	                    },
         [&] {          	
         	PPL_searchRoot(1, spboard2, alpha2, beta, size, m_depth, movetab, incheck, 
         	                   m_bestmove2, old_alpha, root_nodes, nUnchanged, pv_i2   
         	                   );               
         	                   }
      );	  
I think it would been most convenient if there is something like parallel_invoke_light() in PPL for paralleling lightweight functions without coding the thread data-structure, low-level calls to scheduler etc.