mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-05-15 14:16:07 -06:00
.tutorial
git-svn-id: svn://ultimatepp.org/upp/trunk@10557 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
parent
639669d3de
commit
515af8ed37
9 changed files with 248 additions and 5 deletions
56
tutorial/CoreTutorial/CoPartition.cpp
Normal file
56
tutorial/CoreTutorial/CoPartition.cpp
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
#include "Tutorial.h"
|
||||
|
||||
void CoPartitionTutorial()
|
||||
{
|
||||
/// .CoPartition
|
||||
|
||||
Vector<int> data;
|
||||
for(int i = 0; i < 10000; i++)
|
||||
data.Add(i);
|
||||
|
||||
int sum = 0;
|
||||
|
||||
CoWork co;
|
||||
for(int i = 0; i < data.GetCount(); i++)
|
||||
co & [i, &sum, &data] { CoWork::FinLock(); sum += data[i]; };
|
||||
co.Finish();
|
||||
DUMP(sum);
|
||||
|
||||
///
|
||||
|
||||
sum = 0;
|
||||
CoPartition(data, [&sum](const auto& subrange) {
|
||||
int partial_sum = 0;
|
||||
for(const auto& x : subrange)
|
||||
partial_sum += x;
|
||||
CoWork::FinLock(); // available as CoPartition uses CoWork
|
||||
sum += partial_sum;
|
||||
});
|
||||
DUMP(sum);
|
||||
|
||||
///
|
||||
|
||||
sum = 0;
|
||||
CoPartition(data.begin(), data.end(), [&sum] (auto l, auto h) {
|
||||
int partial_sum = 0;
|
||||
while(l != h)
|
||||
partial_sum += *l++;
|
||||
CoWork::FinLock(); // available as CoPartition uses CoWork
|
||||
sum += partial_sum;
|
||||
});
|
||||
DUMP(sum);
|
||||
|
||||
///
|
||||
|
||||
sum = 0;
|
||||
CoPartition(0, data.GetCount(), [&sum, &data] (int l, int h) {
|
||||
int partial_sum = 0;
|
||||
while(l != h)
|
||||
partial_sum += data[l++];
|
||||
CoWork::FinLock(); // available as CoPartition uses CoWork
|
||||
sum += partial_sum;
|
||||
});
|
||||
DUMP(sum);
|
||||
|
||||
///
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue