Multithreading e programmazione funzionale in Cpp0X -C++11

32
 Cuftjtgrlamjno l prdoraccazjdnl bunzjdnafl jn @pp;W - @++11 Rjn`lnzd Fa Pplsa 1; aprjfl 9;19 Jnmj`l 1 Jnt rdmuzjdn l5 Jf @++ ndn k l an`dra cdrt d  0 1.1 Fd sta nmarm @++;W - @++11  . . . . . . . . . . . . . . . . . . . . . . . . = 9 jf @++ l fl facima  = 9.1 Jf `a sd pjk u slcpfj`l, fl bunzjdnj vdjm  . . . . . . . . . . . . . . . . . . . . . < 9.9 Fl bun zjdnj `gl usand l rlst jtujs` dnd par acltrj  . . . . . . . . . . . . . . . < 9.0 Fl b unz jdnj facima l fa v jsj ijf jtk a  . . . . . . . . . . . . . . . . . . . . . . . 2 9.= B unzjd nj `g l rj`lv dnd bunzjdnj l bunzjdnj a ndnjcl  . . . . . . . . . . . . . . ? 9.< Quaf` gl ls lcpjd bunzj dnafl ( ` gl bunzjdna ) . . . . . . . . . . . . . . . . . ? 0 Jf @++ l jf Cuf tjt grl amj no  1; 0.1 Aff d`gjacd jf nds trd p rjcd tgr lam  . . . . . . . . . . . . . . . . . . . . . . 1; 0.9 ]grl am l `dnmjv jsj dnl m lj matj . . . . . . . . . . . . . . . . . . . . . . . . . 19 0.0 Aff d`ar l un ]grl am sl nza `rlarl un doolttd  . . . . . . . . . . . . . . . . . 10 = Pjn`r dnjzz azjdn l mlj ]grl am l ols tjdnl ml ffl rjs drsl `d n j Cutlx  1= =.1 J Cu tl x  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1< =.9 Cutlx lm l`` lzj dnj  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1? < \sd av anz atd mlj Cut lx  17 <.1 ]jclm cutlx l fa prlndtazjdnl `dn tjcldut cas sjcd . . . . . . . . . . . . 1: <.9 A``l ssd a ffl bun zjdnj jntlrnl mlf cutlx . . . . . . . . . . . . . . . . . . . . 1: <.9.1 [rlndtazjdnl cu ftjpfa  . . . . . . . . . . . . . . . . . . . . . . . . . 9; 2 Jf prd if lca mlj < fds d 91 2.1 Rarj apprd``j j nol nu j  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 2.9 \na sdfuzj dnl bunzjdnan tl  . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 ? Fl @dn mjtjdn , jcpflclntazjd nl mlffl `dml mj a ttlsa  9= ?.1 Fl @dnmjtjdn  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9= ?.9 Ca fl `dsl ndn sdnd `d sk ı slcpfj`j...  . . . . . . . . . . . . . . . . . . . . . . 9< 1

description

A brief tutorial on Cpp0X, in Italian

Transcript of Multithreading e programmazione funzionale in Cpp0X -C++11

Page 1: Multithreading e programmazione funzionale in Cpp0X -C++11

5/16/2018 Multithreading e programmazione funzionale in Cpp0X -C++11 - slidepdf.com

http://slidepdf.com/reader/full/multithreading-e-programmazione-funzionale-in-cpp0x-c11

Kwmxaxftg`habe g ytlet`kk`zalbg cwbzalb`mg ab Nyy9V +

N//00

Sabngbzl M` ^yg~`

09 `ytamg 4904

Abhang

0 Abxtlhwzalbg: Am N// blb ig `bnlt` kltxl >0"0 Ml ~x`bh`th N//9V + N//00 " " " " " " " " " " " " " " " " " " " " " " " " 8

4 am N// g mg m`kdh` 84"0 Am n ~l yaiw ~gkymang- mg cwbzalba slah " " " " " " " " " " " " " " " " " " " " " 74"4 Mg cwbzalba nfg w~`bl g tg~xaxwa~nlbl y`t`kgxta " " " " " " " " " " " " " " " 74"> Mg cwbzalba m kdh` g m` sa~adamaxi " " " " " " " " " " " " " " " " " " " " " " " 34"8 Cwbzalba nfg tangslbl cwbzalba g cwbzalba `blbakg " " " " " " " " " " " " " " 54"7 Pw`mnfg g~gkyal cwbzalb`mg & nfg cwbzalb` " " " " " " " " " " " " " " " " " 5

> Am N// g am Kwmxaxftg`habe 09>"0 @mmlnfa`kl am bl~xtl ytakl xftg`h " " " " " " " " " " " " " " " " " " " " " " 09>"4 Xftg h g nlbhasa~albg hga h`xa " " " " " " " " " " " " " " " " " " " " " " " " " 04>"> @mmln tg wb Xftg`h ~gbz` ntg`tg wb leegxxl " " " " " " " " " " " " " " " " " 0>

8 ^abntlbazz`zalbg hga Xftg h g eg~xalbg hgmmg ta~lt~g nlb a Kwxgv 08

8"0 A Kwxgv " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 078"4 Kwxgv gh gnngzalba " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 05

7 W~l `s`bz`xl hga Kwxgv 067"0 Xakgh kwxgv g m` ytgblx`zalbg nlb xakglwx k`~~akl " " " " " " " " " " " " 017"4 @nng~~l mmg cwbzalba abxgtbg hgm kwxgv " " " " " " " " " " " " " " " " " " " " 01

7"4"0 Ytgblx`zalbg kwmxaym` " " " " " " " " " " " " " " " " " " " " " " " " " 49

3 Am ytldmgk` hga 7 ffml~lff 403"0 S`ta `yytlnna abegbwa " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 403"4 Wb` ~lmwzalbg cwbzalb`bxg " " " " " " " " " " " " " " " " " " " " " " " " " " " 44

5 Mg Nlbhaxalb- akymgkgbx`zalbg hgmmg nlhg ha `xxg~` 485"0 Mg Nlbhaxalb " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 485"4 K` mg nl~g blb ~lbl nl~iİ ~gkymana""" " " " " " " " " " " " " " " " " " " " " " " 47

0

Page 2: Multithreading e programmazione funzionale in Cpp0X -C++11

5/16/2018 Multithreading e programmazione funzionale in Cpp0X -C++11 - slidepdf.com

http://slidepdf.com/reader/full/multithreading-e-programmazione-funzionale-in-cpp0x-c11

6 Am ytldmgk` hgm d tdagtg `hhltkgbx xl 436"0 Am d`tdagtg " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 436"4 Am nmagbxg " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 436"> Nlhang nlkymgxl " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 45

@ @kdagbxg ha ~samwyyl g ytldmgka ha nlkyam`zalbg >0@"0 EBW Enn + e// " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " >0

@"0"0 KabEu " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " >0@"0"4 Kwmxaxftg`habe " " " " " " " " " " " " " " " " " " " " " " " " " " " " " >0

@"4 Kantl~lcx Sa~w m ^xwhal " " " " " " " " " " " " " " " " " " " " " " " " " " " " >0

Tacgtakgbxa dadmalet`ffna >0

s0"9"9fxxy:,,uuu"xfgh`t~f`b"nlk,

SabngbzlM`^yg~`Iek`am"nlk

Pwg~x‑lygt ig ~x`x` tam`~na`x` ~lxxl m` mangbz` Ntg xasg Nlkklb~ @xxtadwzalbg+Blb nlkkgtna`mg+Nlbhasaha `m ml ~xg~~l klhl 4"7 Ax`ma " Ygt mgeegtg wb` nlya` hgm m` mangbz` 

sa~ax` am ~axl ugd fxxy:,,ntg`xasgnlkklb~"lte,mangb~g~,dq+bn+~`,4"7,ax, l ~ygha~na wb` mgxxgt` ` Ntg xasg Nlkklb~- 050 ^gnlbh ^xtggx- ^waxg >99- ^`b Ct`bna~nl- N`macltba -

18097- W^@"

Pwg~xl hlnwkgbxl ig ~x`xl ytlhlxxl g aky`eab`xl nlb M@XGV

4

Page 3: Multithreading e programmazione funzionale in Cpp0X -C++11

5/16/2018 Multithreading e programmazione funzionale in Cpp0X -C++11 - slidepdf.com

http://slidepdf.com/reader/full/multithreading-e-programmazione-funzionale-in-cpp0x-c11

0 Abxtlhwzalbg: Am N// blb ig `bnlt` kltxl

Wbl hga mabew`eea nfg fl sa~xl yaiw k`mxt`xx`tg `mm‑Wbasgt~axi g ha nlb~gewgbz` yla h`klmxa &~ghangbxa g,l cwxwta abegebgta hgm ~lcxu`tg nfg f`bbl c`xxl am et`sg gttltg ha`nngxx`tg `ntaxan`kgbxg mg amm`zalba hga ytlcg~~lta ig am N// &wb kal ytlcg~~ltg bg `sgs`pw`~a xgttltg"""

Kanfgmg ^na`d`tti `bba c` ~nta~~g ab wb ~wl yl~x 0 sgt`kgbxg egba`mg:

N// Masgmml ha nlkymg~~axi: G^@EGT@XL" Ygt aky`t`tml na kgxxa kgxi 

hgmm` xw` sax`" G y la akyagefa m‑`mxt` kgxi ` nlbsabngtg ema `mxta ` aky`t`tml-

 ygtnfg hgsa eaw~xaffn`tg ` xg ~xg~~l YGTNFG‑  f`a ygthwxl kgxi hgmm` xw` 

sax`"

Ntgha ha c`tg wb` nl~ - g absgng bg c`a wb‑`mxt " M` ~xg~~ nl~ - ab wb n`~l

~aebaffn` wb` nl~` g ab wb `mxtl ~aebaffn` wb‑`mxt`" ^gbz` nlbx`tg nfg m` ~xg~~` 

nl~` ygt wb nlkyam`xltg ~aebaffn` wb` nl~ - ygt wb `mxtl n‑ig wb dwe nfg m` c` 

hasgbx tg wb‑`mxt`- g ab wb `mxtl `bnlt` blb ig ~wyyltx x`" G blb `dda`kl

`bnlt` nlb~ahgt`xl a xgkym`xg"

Lt`- ^na`d`tti ~nfgtz`s` k` nyy ~a hanlbl klmxg nl~g n`xxasg"""m` k`eealt y`txg hgmmgpw`ma ~gnlbhl kg hgtas`bl h` wb nlbctlbxl ab`yytlyta`xl g ~xwyahl nlb J`s`- ~a hangytak` ha xwxxl nfg

Am N// ig xtlyyl nlkyman`xl! bg~~wbl ml nlbl~ng ygt abxgtl!Am nyy blb ig nlkyman`xl- ig s ~xl" M‑ahg` nfg wb mabew`eeal s`h` aky`t`xl g w~`xlygt abxgtl ig xayan` hga mabew`eea ha bwls` egbgt`zalbg nlkg am J`s`- k` blb ig`~~lmwx`kgbxg wb` nl~` bgng~~ ta` ab egbgtg" Am nyy y`txg h`m ytabnayal nfg ~gig yl~~adamg c`tg wb` nl~` am mabew`eeal hgsg ygtkgxxgtml- ~g yla a 8 xaya ha n`~x lm‑gtghax`tagxi kwmxaym` xa c`bbl lttltg l y`wt`"""blb w~`tma! Tg~x` am c`xxl nfg ~a`blwxama g nlklha ygt c`tg ulto`tlwbh- g a ulto`tlwbh ~gtslbl & bgm klbhl tg`mg`mkgbl g `bnfg c`tg nl~g lttadama nlkg klhaffn`tg mg s`ta`dama hanfa`t`xg nl~x`bxaywil xltb`tg wxamg"

wb `mxt` ahg` `bnlt` yaiw ~xwyah` k` nlkwbpwg `dd`~x`bz` ab sle` g nfg:

M` madtgta` hgm N// ig ~n`tb`!Nlbclbhgtg m` madtgta` ha wb mabew`eeal nlb am mabew`eeal ig sgt`kgbxg ~xwyahl! `bnfgh`tg ygt `~~wbxl nfg wb mabew`eeal bgng~~axa ha wb` madtgta` abxtab~gn` ml ig- ygt`mxtlmg ~xm g m` madtgta` ~x`bh`th ltlbl wb ~gx ha cwbzalb`maxi nfg nlytg xwxxg mg bgng~~axiha d`~g- g ygt am tg~xl ~g bg xtls`bl ` y`m`xg ha madtgtag ytlbxg"

G `hg~~l sgba`kl `m sgtl klxasl ygt nwa ~xl ~ntasgbhl:0fxxy:,,kanfgmg"~na`d`tt "nlk,y`eg,BlbW~`xgPwgmMabew`eeal

>

Page 4: Multithreading e programmazione funzionale in Cpp0X -C++11

5/16/2018 Multithreading e programmazione funzionale in Cpp0X -C++11 - slidepdf.com

http://slidepdf.com/reader/full/multithreading-e-programmazione-funzionale-in-cpp0x-c11

0"0 Ml ~x`bh th N//9V + N//00

Hangsl nfg n// blb ig kltxl g ~a nlbxabw` `h gslmsgtg- am ~wl wmxakl ~x`bh`th blb igpwgmml hgm 0116 nfg xwxxa nlbl~nlbl & l hanlbl ha nlbl~ngtg g bgkkgbl pwgmml hgm 499>"

Bgm 4996 am ‑N// ^x`bh`th~ Nlkkaxxgg‑ f` ~samwyy`xl wb bwlsl ~x`bh`th nfa`k`xlytlssa~lta`kgbxg Nyy9V- m` d lzz` ig ~x`x` ytg~gbx x` nlb am blkg ha B>043 am 40 `el~xl4909" Am 47 k`tzl 4900 m‑A^L slx` m` dlzz` ffb`mg &x`te`x` B>419 nfg sagbg nlbxt ~+

~geb`x` nlkg CHA^ &Cab`m Ht`cx Abxgtb`xalb`m ^x`bh`th" Am 0

l

~gxxgkdtg 4900 sagbgywddman`x` m` sgt~albg ffb`mg hgm N//00 h` y`txg ha A^L g AGN"M` bwls` sgt~albg abxtlhwng klmxg bwlsg cwbzalb`maxi- ~a` bgm mabew`eeal nfg bgmm`

~w` madtgta` ~x`bh`th xt` nwa mg yaiw akyltx`bxa ~lbl am ~wyyltxl `mm` ytlet`kk`zalbgcwbzalb`mg & hgmge`xg g m`kdh` cwbnxalb g `m kwmxaxftg`habe nlb m‑abnmw~albg bgmmg ~xm hawb abxgtc`nna` nlkymgx` `a yxftg`h & g nfa `dda` k`a m`slt`xl nlb pwga nl~a ~` pw`bxl ~a`ytlma~~` `xxw`mkgbxg m` mltl eg~xalbg"

@xxw`mkgbxg am bwlsl ~x`bh`th ig ~wyyltx`xl h`mmg wmxakg sgt~alba ha Kantl~lcx Sa+~w m ^xwhal g h`ema wmxaka Enn wxamazz`bhl hga ffl`e ha nlkyam`zalbg- mg ytlnghwtg hanlkyam`zalbg ~lbl g~yl~xg `mm` ffbg hgm xwxlta`m"

4 am N// g mg m`kdh`Wb abxgtg~~`bxg cwbzalbg abxtlhlxx` bgmml ~x`bh`th N//9V ~lbl mg m`kdh`

Mg cwbzalba m`kdh` ~lbl xayanfg hga mabew`eea nfg `yyman`bl am y`t`haek` hgmm` ytl+et`kk`zalbg cwbzalb`mg & nlkymgx`kgbxg l ab k`bagt` adtah` g ygtkgxxlbl ha xt`xx`tgmg cwbzalba nlkg ~g cl~~gtl leegxxa- ylxgbhlmg pwabha hgffbatg ab pw`mwbpwg ywbxl hgmnlhang g `~~geb`tg ` wb` s ta`damg" Sgha`kl wb g~gkyal ha nlkg pwg~xl `yytlnnal ~a`~x`xl akymgkgbx`xl bgm nyy

8

Page 5: Multithreading e programmazione funzionale in Cpp0X -C++11

5/16/2018 Multithreading e programmazione funzionale in Cpp0X -C++11 - slidepdf.com

http://slidepdf.com/reader/full/multithreading-e-programmazione-funzionale-in-cpp0x-c11

4"0 Am n`~l yaiw ~gkymang- mg cwbzalba slah

Ma~xabe 0: mg cwbzalba slah + slah

.abnmwhg =a l ~ x t g ` k2

w~ab e b`kg~y ng ~xh ?

`wxl m`kdh` ;_ [& {nlwx == ‛P wg~x` g ‑ wb` m `kdh`‛ == gbhm ?

?

abx k`ab&{

`wxl m `kdh`4; _ [ & {nlwx == ‛Wb` m`kdh` ywl ‑ g ~ ~ g t g h g c a b a x `

` bn fg h gb xt l wb ` m x t ` c w b za l b g ‛ == gbhm ? ?

nlwx == ‛ F g m m l u l t m h ! ‛ == gbhm ?m`kdh` & ?

m`kdh`4 & ?tgxwtb 9 ?

nlkg ~a sghg h`m nlhang `dda`kl hgffbaxl hwg cwbzalba m`kdh` `~~geb`bhlmg ` s`+ta`dama- `hg~~l sgha`kl nlkg nlkyltx`t~a ygt hgffbatg cwbzalba nfg w~`bl l ytlhwnlbls`mlta &pwg~xg pwa gt`bl slah∔ 2 slah

4"4 Mg cwbzalba nfg w~`bl g tg~xaxwa~nlbl y`t`kgxta

Ma~xabe 4: Mg cwbzalba nfg w~`bl g tg~xaxwa~nlbl y`t`kgxta

abx k`ab&{

`wxl ~lkk`;_[& a bx ` - a bx d {tgxwtb &`/d?

?

`wxl y t l h l x x l ; _ [ & a bx ` - a bx d ∔2 abx {tgxwtb &`/d?

?

nlwx == ‛ 4/4 c ` ‛ == ~lkk`&4 - 4 == gbhm ?nlwx == ‛ 4∕4 c ` ‛ == ytlhlxx l &4 - 4 == gbhm ?

tgxwtb 9 ?

7

Page 6: Multithreading e programmazione funzionale in Cpp0X -C++11

5/16/2018 Multithreading e programmazione funzionale in Cpp0X -C++11 - slidepdf.com

http://slidepdf.com/reader/full/multithreading-e-programmazione-funzionale-in-cpp0x-c11

m` ma~x` hga y`t`kgxta ab gbxt`x` sagbg hanfa`t`x` xt` mg y`tgbxg~a xlbhg- am xayl hgm y`t`+kgxtl ab w~nax` ywil g~~gtg hgffbaxl g~ymanax`kgbxg nlb ∔ 2 nlkg bgm n`~l ha ytlhlxxllm`~na`xl akymanaxl nlkg bgm n`~l ha ~lkk` g ab pwg~xl n`~l sagbg hghlxxl h`m nlkyam`xltg

@ pwg~xl ywbxl sa ~x`tgxg nfaghgbhl ` nfg ~gts`bl mg y`tgbxg~a pw`htg ~wyylbel

4"> Mg cwbzalba m`kdh` g m` sa~adamaxi

M` ytlet`kk`zalbg ` leegxxa na f` `daxw`xl `m nlbngxxl ha sa~adamaxi ha wb` s`ta`damg- ygtg~gkyal wb` cwbzalbg hgffbax` hgbxtl wb` nm`~~g `nnghg `ema leegxxa hgmm` nm`~~g- k` wb`m`kdh` nfg ywil g~~gtg hgffbax` ab pw`mwbpwg ywbxl hgm nlhang ` nl~` ywil `nnghgtg< m`ta~yl~x ig: `~~lmwx`kgbxg ` bwmm` ~g ~a swlmg c`tg ab klhl nfg pw`mnl~` sgbe` sa~xlh`mm‑abxgtbl ha wb` m`kdh` da~leb` y`~~`tg am ~wl tgcgtgbng xt` mg pw`htg- sgha`kl wbg~gkyal

Ma~xabe >: wb nlhang nfg blb cwbzalb`

abx k`ab&{abx n ?`wxl ~lkk`;_[& a bx ` - abx d {

n;`/d ? ?

" " "

m` nlkyam`zalbg hgm ygzzl ha nlhang ytgnghgbxg na h`ti wb gttlt: ‑n‑ a~ blx n`yxwtghygt tgbhgtml sa~adamg hldda`kl c`tg pwg~xl

Ma~xabe 8: Am klhl eaw~xl ha ytlnghgtg

a bx k`ab&{

a bx n ?`wxl ~lkk`;_#n [ & a bx ` - a bx d {

n;`/d ? ?

~lkk`&4 -4?nlwx == ‛ 4/4 c ` ‛ == n == gbhm ?

tgxwtb 9 ?

pwabha y`~~`bhl wb ywbx`xltg ` xfa~ ` wb` m`kdh` tgbha`kl sa~adamg m‑abxgtl leegxxl"ig `hhataxxwt` yl~~adamg y`~~`tg m‑abxgtl nlbxg~xl w~`bhl _#[ g _;[ hlsg m` ytak` y`~~`

ygt tgcgtgbng g m` ~gnlbh` ygt s`mltg

3

Page 7: Multithreading e programmazione funzionale in Cpp0X -C++11

5/16/2018 Multithreading e programmazione funzionale in Cpp0X -C++11 - slidepdf.com

http://slidepdf.com/reader/full/multithreading-e-programmazione-funzionale-in-cpp0x-c11

4"8 Cwbzalba nfg tangslbl cwbzalba g cwbzalba `blbakg

Wb` n`t`xxgta~xan` clbh`kgbx`mg hgmm` ytlet`kk`zalbg cwbzalb`mg ig m` yl~~adamaxi ha y`~+~`tg cwbzalba `h `mxtg cwbzalba- ab pwg~xl n`~l ygtil m` ~abx`~~a hgm nyy ig wb y l ~yltn` g~a`kl nl~xtgxxa `h w~`tg m` madtgta` cwbnxalb`m ygtnfg blb ig abxgt`kgbxg yl~~adamg c`tmlhatgxx`kgbxg w~`bhl ~lml am mabew`eeal g mg ~wg ogqulth- na ~gtsati m` nm`~~g egbgtan`c wbnxalb = xaylw~nax &xayaabetg~~l 2

bgmm‑g~gkyal y l~~a`kl blx`tg nfg ig `bnfg yl~~adamg hgffbatg wb` cwbzalbg g y`~~`tm`~gbz` `~~geb`tm` ` wb` s`ta`damg- m` cwbzalbg tg~x` pwabha `blbak`Yl~~a`kl ablmxtg sghgtg nlkg ~a` yl~~adamg klhaffn`tg am nlkyltx`kgbxl ha wb` cw+

zalbg h`m ~wl g~xgtbl y`~~`bhlema wb `mxt` cwbzalbg- abc`xxa bgm ytakl n`~l ~ntasa~lkk`~ntasg ~wmml ~xhlwx kgbxtg bgm ~gnlbhl ~w ffmg

Ma~xabe 7: cwbzalba nfg tangslbl cwbzalba

.abnmwhg =a l ~ x t g ` k2

.abnmwhg =c ~ x t g ` k2

.abnmwhg =c w b n x a l b ` m 2

w~ab e b`kg~y`ng ~xh ?

a bx k`ab&{

a bx n ?nf`t∕ c a m g b ` k g ;‛ h ` x a " x v x ‛ ?`wxl ~ntasa~ lkk` ;_#[& a bx ` - a bx d - nlb~x c w b n x a l b =slah & a bx2# u t a x g t {

n;`/d ?u t a x g t & n ?

?

`wxl ~ n t a x x l t g ; _; [& a bx v {l c ~ x t g ` k k q c a m g ?k q c a m g " l yg b & c a m g b ` k g ?

k q c a m g == v == ‛ ]b‛ ?k q c a m g " n m l ~ g & ? ?

~ n t a s a~ l k k ` & 4 - 4 - ~ n t a x x l t g ?~ n t a s a~ l k k ` & 4 - 4 - _ [ & a bx v { nlwx == v == gbhm ? ?

tgxwtb 9 ?

4"7 Pw`mnfg g~gkyal cwbzalb`mg & nfg cwbzalb`!

@hg~~l ngtnfa`kl ha absgbx`tna pw`mnl~` nfg ~a` nlklhl h` tg`mazz`tg nlb m` ytlet`kk`+zalbg cwbzalb`mg g ~nlklhl nlb pwgmm` ytlnghwt mg""" @dda`kl sa~xl am n`~l ytgnghgbxgha wb` cwbzalbg nfg ~a `~ygxx` wb‑`mxt` cwbzalbg h` wxamazz`tg ygt ~ntasgtg a h`xa" Wb

5

Page 8: Multithreading e programmazione funzionale in Cpp0X -C++11

5/16/2018 Multithreading e programmazione funzionale in Cpp0X -C++11 - slidepdf.com

http://slidepdf.com/reader/full/multithreading-e-programmazione-funzionale-in-cpp0x-c11

`mxtl w~l klmxl haw~l hgmmg m`kdh` na ygtkgxxg ha klhaffn`tg am nlkyltx`kgbxl ha wb`meltaxkl y`~~`bhlema wb `mxtl `meltaxkl- wb ~gkymang g~gkyal ig wb` egbgtan` cwbzalbg halthab`kgbxl ` nwa y`~~a`kl wb` cwbzalbg ha nlbctlbxl- pwg~xl na ygtkgxxg ~a` ha lthab`tglegxxa ha xaya blb nlbl~nawxa h`mm` cwbzalbg g blb lthab`dama ` ytalta ~a` ha klhaffn`tg mgtgm`zalba ha lthabg"

6

Page 9: Multithreading e programmazione funzionale in Cpp0X -C++11

5/16/2018 Multithreading e programmazione funzionale in Cpp0X -C++11 - slidepdf.com

http://slidepdf.com/reader/full/multithreading-e-programmazione-funzionale-in-cpp0x-c11

Ma~xabe 3: wb g~gkyal nlkymgxl

.abnmwhg =a l ~ x t g ` k2

.abnmwhg =c ~ x t g ` k2

.abnmwhg =c w b n x a l b ` m 2

.abnmwhg =~ x h a l " f2

.abnmwhg = ~ x h m a d " f2

.abnmwhg =~ x t a b e " f2

.abnmwhg =xakg " f2

w~ab e b`kg~y`ng ~xh ?

slah ~ l t x & slah∕ v _ [ - a bx b - nlb~x c w b n x a l b =a bx & slah∕ - slah∕2# n l k y `t ` x l t {a bx a - j ?slah∕ `yy?

clt & a ;0? a =b ? a // {`yy ; v _ a [ ? j ; a ∔0?ufamg & j 2;9 ## nlky `t` xlt &v _ j [ - yy 29 {

v _ j / 0[ ; v _ j [ ? j∔∔?

v _ j / 0[ ; `yy ?

tgxwtb ?

a bx k`ab&{

~ t` bh & xa kg & 9 ?a bx n ?nf`t∕ n l ~ a _[ ;{ ‛ yl m m l ha elkk`‛ - ‛`kk`nn`d`b`bg‛ - ‛ nl~l ‛ - ‛ n`bbwnna ` ~d a t wm `

`wxl l t h a b ` ~ x t ; _ [ & slah ∕` - slah ∕d∔2a bx {tgxwtb ~ x t m g b & & nlb~x nf`t∕ `∔ ~ x t m g b & & nlb~x nf`t∕ d ? ?

`wxl h a ~ l t h a b ` ~ x t ; _ [ & slah ∕` - slah ∕d∔2a bx {tgxwtb t`bh&'3 ∔>??

~ l t x & & slah∕∕ n l ~ a - 8 - l t h a b ` ~ x t ?clt & a bx b;9?b=8?b//nlwx == n l ~ a _ b [ == gbhm ?

nlwx==gbhm==gbhm ?

~ l t x & & slah∕∕ n l ~ a - 8 - h a ~ l t h a b ` ~ x t ?

clt & a bx b;9?b=8?b//nlwx == n l ~ a _ b [ == gbhm ?

tgxwtb 9 ?

1

Page 10: Multithreading e programmazione funzionale in Cpp0X -C++11

5/16/2018 Multithreading e programmazione funzionale in Cpp0X -C++11 - slidepdf.com

http://slidepdf.com/reader/full/multithreading-e-programmazione-funzionale-in-cpp0x-c11

> Am N// g am Kwmxaxftg`habe

Wb‑`mxt` cwbzalb`maxi klmxl abxgtg~~`bxg abxtlhlxx` bgm N//9V ig am ~wyyltxl b`xasl `mkwmxaxftg`habe"

G~a~xgs`bl eai madtgtag nfg ~a lnnwy`s bl ha kwmxaxftg`habe ab nyy k` `hg~~l ig abxg+et`xl bgm mabew`eeal g bgmm` ~w` madtgta` ~x`bh`th `bnfg ~g am d`nogbh nfg ggxxas`kgbxg`mmln` a xftg`h ig m‑lbbaytg~gbxg madtgta` yxftg`h"

>"0 @mmlnfa kl am bl~xtl ytakl xftg`h

Wb xftg`h ig wb pw`mnl~` nfg sagbg g~gewaxl ab y`t`mmgml- g pwabha ~a ntg` `xxt`sgt~l wb`cwbzalbg nfg ig pwgmml nfg hgsg c`tg- blb ig bgng~~`tal ntg`tg wb` nm`~~g abxltbl `m xftg`hnlkg ~a c`tgddg ab J`s`- d`~x` y`~~`tg `m nl~xtwxxltg ha xftg`h m` cwbzalbg nfg hgsgg~gewatg am xftg`h nl~xtwaxl l pw`mnl~` ha gpwas`mgbxg"

Nyy ig wb mabew`eeal k`tn`x`kgbxg LLY g abc`xxa blb ig bgng~~`tal y`~~`tema wb`ytlnghwt`- d`~x` pw`mwbpwg legxxl ~wyyltxa m‑lygt`xltg &- yl~~a`kl `bnfg ntg`tg wb`nm`~~g nfg hgffba~ng pwg~xl lygt`xltg g y`~~`tbg wb a~x`bz`"

09

Page 11: Multithreading e programmazione funzionale in Cpp0X -C++11

5/16/2018 Multithreading e programmazione funzionale in Cpp0X -C++11 - slidepdf.com

http://slidepdf.com/reader/full/multithreading-e-programmazione-funzionale-in-cpp0x-c11

Ma~xabe 5: S`ta klha ygt `mmln`tg wb xftg`h

.abnmwhg =a l ~ x t g ` k2

.abnmwhg =xftg`h2

.abnmwhg =n ~ x h m a d 2

w~ab e b`kg~y`ng ~xh ?

slah n l ~ ` h ` c ` t g & {nlwx==‛ ^ lb l w b` y t l n g h w t ` ! ‛==gbhm ?

n m ` ~ ~ Hwkkq{ywdman :

slah lygt`xlt & & {cl t & a bx `;9?`=7?`//{nlwx==‛ ^ lb l wb l e e g x x l -

g p wa bh a y aiw c a e l h a wb` y tl ng hw t` ! ‛== ` ==gbhm ?w ~ m g g y & 0 9 99 ∕ & t `b h & ' 19 9 / 099 ? ?

slah w n n a h a k a & {cl t & a bx `;9?`=79?`//{nlwx==‛ A l y ` t m l x t ly yl ‛== ` ==gbhm ?w ~ m g g y & 0 9 99 ∕ & t `b h & ' 19 9 / 099 ?

a bx k`ab&

{Hwkkq u?~ x h : : x f t g ` h x 0 &u ?~ x h : : x f t g ` h x 4 & n l ~ ` h ` c ` t g ?~ x h : : x f t g ` h x > & w n n a h a k a ?

x 0 " j l a b & ?x 4 " j l a b & ?x> " hgx`nf & ?

?

G‑ abxgtg~~`bxg blx`tg nfg pw`bhl ~a nfa`k` wb xftg`h ~w wb leegxxl- nlkg bgm n`~l ha ~xh::xftg`h x0&u!- blb ema sagbg y`~~`xl am sgtl leegxxl k` wb` ~w` nlya` - k` ha pwg~xl

bg y`tma`kl hlyl"Mg jlab ~gtslbl `h `~ygxx`tg nfg a xftg`h ffba~nlbl ytak` ha xgtkab`tg am ytlet`kk`-

00

Page 12: Multithreading e programmazione funzionale in Cpp0X -C++11

5/16/2018 Multithreading e programmazione funzionale in Cpp0X -C++11 - slidepdf.com

http://slidepdf.com/reader/full/multithreading-e-programmazione-funzionale-in-cpp0x-c11

abc`xxa a xftg`h ~lbl nlbngxxw`mkgbxg ‑ffema‑  hgm ytlng~~l y`htg & am c`xxl nfg ml ~a`bl sgt`+kgbxg haygbhg h`mm‑akymgkgbx`zalbg g ~g xgtkab`~~g am ytlng~~l y`htg a ffema sgttgddgtlxgtkab`xa ha nlb~gewgbz` c`ngbhl egbgt`tg ` mabwv wb `mm`tk`bxg kg~~`eeal ha u`tbabe-ygt xgtkab`tg wb xftg`h ytak` nfg `dda` ffbaxl am ~wl m`sltl ~a w~` hgx`nf

>"4 Xftg`h g nlbhasa~albg hga h`xa

Wbl hga s`bx`eea hga xftg`h ta~ygxxl `a ytlng~~a ig nfg nlbhasahlbl ml ~y`zal ha kgklta`xt` ha mltl- xwxxl pwgmml nfg ig bgmml ~y`zal ha abhatazz`kgbxl hgm ytlng~~l y`htg ywil g~~gtgy`~~`xl `a ffema"

Pwabha ta~wmx` klmxl nlbsgbagbxg ya`zz`tg hgbxtl wb leegxxl m` ytlnghwt` hgm xftg`hg a h`xa ab nwa hlsti m`slt`tg k` n‑ig wb abnlbsgbagbxg: nlkg hangs`kl ~lyt` pw`bhl ~anfa`k` wb xftg`h ~w wb leegxxl- nlkg bgm n`~l ha ~xh::xftg`h x0&u!- blb emasagbg y`~~`xl am sgtl leegxxl k` wb` ~w` nlya` - pwg~xl ig attamgs`bxg bgm n`~l haleegxxa nfg ut`yy`bl ~lml wb` ytlnghwt` k` ywil g~~gtg wb` clbxg ha dwe ~wdhlma bgm n`~lg~~a nlbxgbe`bl h`xa abc`xxa klhaffn`bhl m‑leegxxl blb klhaffnfa`kl bagbxg `mm‑abxgtbl hgmxftg`h ygtnfg ~lbl leegxxa hasgt~a

~g slema`kl gsax`tg pwg~xl nlkyltx`kgbxl hldda`kl cltz`tg wb y`~~`eeal sa` tgcg+tgbng g blb `dda`kl klhl ha c`tml nlm mabew`eeal- hldda`kl `h`tna `mm` k`ea` bgt`hgmmg ~xm-m` ~lmwzalbg ig: ~xh::xftg`h x0&~xh::tgc&hu!!?

Sgha`kl wb g~gkyal

04

Page 13: Multithreading e programmazione funzionale in Cpp0X -C++11

5/16/2018 Multithreading e programmazione funzionale in Cpp0X -C++11 - slidepdf.com

http://slidepdf.com/reader/full/multithreading-e-programmazione-funzionale-in-cpp0x-c11

Ma~xabe 6: Leegxxa nmlb`xa g leegxxa mabo`xa

.abnmwhg =a l ~ x t g ` k2

.abnmwhg =xftg`h2

.abnmwhg =n ~ x h m a d 2

.abnmwhg =~ x t a b e 2

w~ab e b`kg~y`ng ~xh ?

n m ` ~ ~ Hwkkq{ywdman :

~ x t a b e x g ~ xl ?~ x t a b e blkg ?slah lygt`xlt & & {cl t & a bx `;9?`=07?`//{nlwx==blkg == ‛ h an g : ‛ == x g ~ x l == ‛ ‛ == ` ==gbhm ?w ~ m g g y & 0 9 99 ∕ & t `b h & ' 19 9 / 099 ? ?

a bx k`ab&{

Hwkkq u- u4 ?u" xg ~x l;‛`kk`nn`d`b`bg‛ ?u" blkg;‛x ftg `h0 ‛ ?u4;u ?u4"blkg;‛xftg`h4‛?~ x h : : x f t g ` h x 0 &u ?~ x h : : x f t g ` h x 4 & ~ x h : : t g c & u4 ?

~ m g g y & 4 ?u " x g ~ x l ;‛ Q a o g ~ ! ‛ ?u4" xg~xl; ‛Q a og~ ! ‛?x 0 " j l a b & ?x 4 " j l a b & ?

?

G~gewgbhlml blxgtgxg nfg am nlkyltx`kgbxl hgm ytakl xftg`h tg~x` abs`ta`xl- kgbxtgyl~~a`kl `eatg ~wm ~gnlbhl klhaffn`bhl a ~wla h`xa h`mm‑g~xgtbl"

>"> @mmln tg wb Xftg`h ~gbz` ntg tg wb leegxxl

K`met`hl m` ~lmwzalbg ha wb leegxxl ha ut`yygt ywil xltb`tg wxamg am y`~~`tg hga y`t`kgxta`mm ytlnghwt` nfa`k`bxg- am nfg na ygtkgxxg `bnfg ha blb w~`tg nlkymgx`kgbxg wbleegxxl g ha y`~~`tg xwxxa a h`xa ~w nwa hgsg m`slt tg am xftg`h `mm` cwbzalbg nfg bg

0>

Page 14: Multithreading e programmazione funzionale in Cpp0X -C++11

5/16/2018 Multithreading e programmazione funzionale in Cpp0X -C++11 - slidepdf.com

http://slidepdf.com/reader/full/multithreading-e-programmazione-funzionale-in-cpp0x-c11

nl~xaxwa~ng am k`ab- ~gkymangkgbxg `nnlha`kl a y`t`kgxta h` y`~~`tg `mm` cwbzalbg g na`ha`kl `mmg ~xm ygt m` hgxgtkab`zalbg nlttgxx` hgm xayl 4

Ma~xabe 1: G ~g slmg~~a y`~~`tg y`t`kgxta `mm` ytlnghwt` g k`e`ta blb w~`tg wb leegxxl<

.abnmwhg =a l ~ x t g ` k2

.abnmwhg =xftg`h2

.abnmwhg =n ~ x h m a d 2

.abnmwhg =~ x t a b e 2

w~ab e b`kg~y`ng ~xh ?

slah ~x` ky` & ~ x t a b e n l ~` - ~ x t a b e ` m x t ` n l ~ ` {cl t & a bx `;9?`=09?`//{nlwx== n l ~ ` == ` m x t ` n l ~ ` == gbhm ?~ m g g y & 0 ?

a bx k`ab&{

~ x h : : x f t g `h x 0 & ~ x` ky` - ‛ d m ` d m ` d m ` ‛ - ‛ q `h ` q `h ` q `h `‛ ?x 0 " j l a b & ? ? ?

8 ^abntlbazz`zalbg hga Xftg`h g eg~xalbg hgmmg ta~lt~g nlb a Kwxgv

Nlkg `nngbb`xl bgm n`yaxlml ytgnghgbxg wb `yyman`zalbg nfg ~ctwxx` am kwmxaxftg`habe ignl~xaxwax` h` wb ab~agkg ha ytlng~~a ~gpwgbza`ma nllygt`bxa- xwxxa ab g~gnwzalbg `~abntlb`nfg yl~~lbl nlbhasahgtg h`xa g ta~lt~g"

M‑`nng~~l nlbnlttgbxg `a h`xa l `mmg ta~lt~g ywil ytlsln`tg abnlgtgbzg bga h`xa l ~a+xw`zalba ha hg`hmlno bgm n`~l ha ta~lt~g nfg ytgsghlbl `nng~~l g~nmw~asl- ab pwg~xl yl~xngtnfgtil ha `b`mazz`tg ema ~xtwkgbxa nfg N//9V ltg ygt m` ~abntlbazz`zalbg"

@mm‑abxgtbl ha wb ytlng~~l ~a yl~~lbl ~gy`t`tg mg ~gzalba ab nwa m`slt` ~w h`xa abxgtbah` pwgmmg ab nwa ~a `nnghg ` h`xa l ta~lt~g nlbhasa~g- pwg~xg wmxakg sgbelbl hgxxg ~gzalbantaxanfg g ~lbl pwgmmg ha nwa ~a hgsg nwt`tg m` ~abntlbazz`zalbg"

Blb xt`xxgtil ab pwg~xl `txanlml mg ~lmwzalba ¦~xltanfg¦g cwmm+~lcxu`tg ygt m` eg~xalbg hgmmg~gzalba ntaxanfg &`meltaxka ha Hgoogt- ha Ygxgt~lb- `meltaxkl hgm d`bnfagtg g hgm y`bgxxagtgha M`kyltx- ~gk`clta ab ~yabmlno k` xt`xxgtil m‑w~l ha cwbzalba kg~~g ` ha~yl~azalbg h`mm`madtgta` nfg na ygtkgxxlbl ha `~~anwt`tg m` kwxw` g~nmw~albg xt` ytlng~~a `xxt`sgt~l ml~nfghwmgt"

4

m` ~abx`~~a ygt ema `telkgbxa kwmxayma g~a~xgs` eai- k` ig ~x`x` kaemalt`x`- ~g ~agxg nwtal~a mgeegxg pwafxxy:,,uuu"lygb+~xh"lte,jxn0,~n44,ue40,hln~,y`ygt~,4995,b4484"yhc

08

Page 15: Multithreading e programmazione funzionale in Cpp0X -C++11

5/16/2018 Multithreading e programmazione funzionale in Cpp0X -C++11 - slidepdf.com

http://slidepdf.com/reader/full/multithreading-e-programmazione-funzionale-in-cpp0x-c11

Ygt ytak` nl~` ngtnfa`kl ha hgffbatg nl~` hgsg ~wnnghgtg ~w wb` ~gzalbg ntaxan`: wb`slmx` abhasahw`x` g kabakazz`x` wb` ~gzalbg ntaxan` hldda`kl c`tg ab klhl nfg

0" ~a` sgtaffn`x` m` kwxw` g~nmw~albg l~~a nfg ~lmx`bxl wb ytlng~~l ygt slmx` yl~~`xtls`t~a bgmm` ~gzalbg ntaxan`

4" ~a gsaxa m‑`xxg~` abhgffbax` h` y`txg ha wb ytlng~~l nfg xgbx` ha `nnghgtg ` wb`

~gzalbg ntaxan` lnnwy`x`>" wb ytlng~~l nfg ~a xtls` cwlta h`mm` ~gzalbg ntaxan` blb hgsg ylxgt abxgtcgtatg nlb

m‑`nng~~l `mm` ~gzalbg ntaxan` hga ytlng~~a ab `xxg~`

8"0 A Kwxgv

Ml ~xtwkgbxl clbh`kgbx`mg y gt m` ~abntlbazz`zalbg lgtxl h`mmg ~xm ig am Kwxgv- nfg igm` nt`~a ha kwxw`m gvmw~alb g ~gtsg `yywbxl `h gsax`tg nfg yaiw ytlng~~a hgm bgng~~`talyl~~`bl `nnghgtg `h wb` ~gzalbg ntaxan`" G~a~xlbl 8 xaya ha kwxgv:

0" ~gkymang & ~xh::kwxgv

4" ~gkymang nlb xakglwx & ~xh::xakgh kwxgv

>" tanlt~asl & ~xh::tgnwt~asg kwxgv

8" tanlt~asl nlb xakglwx & ~xh::tgnwt~asg xakgh kwxgv

․ wb kwxgv ig ~gkymang ~g am ~wl ~x`xl ig dab`tal & madgtl,lnnwy`xl

․ ig absgng tanlt~asl ~g ygtkgxxg yaiw `nng~~a ytak` ha g~~gtg lnnwy`xl

․ wb kwxgv ig xakgh ~g ig yl~~adamg c`tg ab klhl nfg ~a madgta h` ~lml hlyl wb ngtxlxgkyl

clbh`kgbx`mkgbxg wb kwxgv ha~ylbg ha `mkgbl > cwbzalba:

slah mlno&?nfg ygtkgxxg ha lnnwy`tml l ha `xxgbhgtml ~g ig eai lnnwy`xl

slah wbmlno&?nfg ygtkgxxg ha madgt`tml

dllm xtq mlno&?nfg ygtkgxxg lnnwy`tml ~g ig yl~~adamg ~gbz` ygtil tak`bgtg ab `xxg~`

sgha`kl nlkg w~`tma- ygt ytak` nl~` nl~xtwa`kl wb ytlet`kk` nfg bgng~~axa ha g~~gtg

~abntlbazz`xl

07

Page 16: Multithreading e programmazione funzionale in Cpp0X -C++11

5/16/2018 Multithreading e programmazione funzionale in Cpp0X -C++11 - slidepdf.com

http://slidepdf.com/reader/full/multithreading-e-programmazione-funzionale-in-cpp0x-c11

Ma~xabe 09: wb nlhang nfg blb cwbzalb`

.abnmwhg =a l ~ x t g ` k2

.abnmwhg =xftg`h2

.abnmwhg =n ~ x h m a d 2

.abnmwhg =~ x t a b e 2

w~ab e b`kg~y`ng ~xh ?

slah ~ x` ky ` & ~ x t a b e x g ~ x l {cl t & a bx `;9?`=xg ~x l " m gbexf & ? //{nlwx == xg ~x l _ [ ?c m w ~ f & n l w x ?w ~ m g g y & 0 99 ∕ & t `b h & ' 199 / 09 9 ?nlwx == gbhm ?

n m ` ~ ~ Ultogt{ywdman :

~ x t a b e x g ~ xl ?U lt og t & ~ x t a b e x {xg ~x l;x ?slah lygt`xlt & & {~x`ky`& xg~x l ? ?

a bx k`ab&

{ x f t g `h x 0 & Ul togt & ‛ Pw `b xl m g e b l t l h g tg d d g wb t l h a x l t g~ g wb t l h a x l t g y l x g~ ~ g t l hg t g a m m g eb l < ‛ ?xftg`h x4 &Ultogt& ‛Flu kwnf ullh nlwm h ` ullhnfwnon fw no a c ` u ll hn fw no n l w m h n fw no ullh < ‛ ?x 0 " j l a b & ?x 4 " j l a b & ?

?

am nlhang na c`ti lxxgbgtg pw`mnl~` hgm xayl:

PFluw `bkxwln fm geulblhl tnllwhgmth gdd`g uwllbh

tlnhfawxnlot ngfwn ~og wabc ` t lhauxlltlgh nfywlnxog~

n~lwmgh tnflhwgntgo a m ulmlgehbl<<

03

Page 17: Multithreading e programmazione funzionale in Cpp0X -C++11

5/16/2018 Multithreading e programmazione funzionale in Cpp0X -C++11 - slidepdf.com

http://slidepdf.com/reader/full/multithreading-e-programmazione-funzionale-in-cpp0x-c11

M` ~abntlbazz`zalbg ~a ggxxw` ntg`bhl wb kwxgv emld`mg g nlbhasahgbhlml xt` a xftg`hnfg s`bbl ~abntlbazz`xa g t`nnfawhgbhl m` ~gzalbg ntaxan` hgbxtl wb` mlno g wb` wbmlno

Ma~xabe 00: M` sgt~albg ~abntlbazz`x` hgm nlhang ytgnghgbxg

" " "

n m ` ~ ~ Ultogt{

ywdman :

~ x t a b e x g ~ xl ?kwxgv ∕k?Ultogt& ~x ta be x - kwxgv ∕kxv{k;kxv ?xg ~x l;x ?slah lygt`xlt & & {k∔2m l n o & ?~x`ky`& xg~x l ?

k∔2

w b m l n o & ? ?

a bx k`ab&{

kwxgv ∕k; bgu kwxgv & ?x f tg ` h x 0 & U ltogt & ‛ Pw`bxl m g e bl t l hg t gd d g wb t l h a x l t g ~ g wb t l h a x l t g

y l x g ~ ~ g t l h g tg a m m g e bl < ‛ -k ?x f t g ` h x 4 & U lt og t & ‛Flu kwnf ullh n l w m h ` u ll hn fw no n f wn o a c `ullhnfwno nlwm h nfwno ullh<‛ -k ?x 0 " j l a b & ?x 4 " j l a b & ?

?

8"4 Kwxgv gh gnngzalba

K`met`hl m‑`nng~~l hatgxxl `mmg cwbzalba hgm kwxgv ~a` yl~~adamg ig wb klhl ygtanlml~l haytlnghgtg" Abc`xxa blb eg~xa~ng mg gnngzalba- ~g wb xftg`h egbgt` wb gttltg `mm‑abxgtblhgmm` zlb` ntaxan` am xftg`h sagbg xgtkab`xl k` am kwxgv blb sagbg ~dmlnn`xl- pwabha amklhl nlttgxxl ha eg~xatg wb` ~gzalbg ntaxan` ~`tgddg w~`tg wb xtqn`xnf ab pwg~xl klhl:

05

Page 18: Multithreading e programmazione funzionale in Cpp0X -C++11

5/16/2018 Multithreading e programmazione funzionale in Cpp0X -C++11 - slidepdf.com

http://slidepdf.com/reader/full/multithreading-e-programmazione-funzionale-in-cpp0x-c11

Ma~xabe 04: @nng~~l hatgxxl `m kwxgv

slah lygt`xlt & & {

k∔2m l n o & ?xt q{

~x`ky`& xg~x l ?

k∔2w b m l n o & ?n`xnf & " " " {

k∔2w b m l n o & ?nlwx == ‛ Q a o g ~ ! ‛ == gbhm ?

Wb klhl yaiw nlky`xxl ha w~`tg ab k`bagt` ~anwt` a kwxgv ~a ywil lxxgbgtg w~`bhlema legxxa mlno ew`th hgmmg ~xm- nfg ygtkgxxlbl `bnfg ha tam`~na`tg am kwxgv ab k`bagt``wxlk`xan` pw`bhl ~a g~ng h`m dmlnnl ab nwa ~lbl hgffbaxg & ml ~dmlnn`bl bgm mltl ha~xtwxxltg

ygt g~~gtg ytgna~a- am nlhang ytgnghgbxg ~a ywil ta~ntasgtg ab pwg~xl klhl:

Ma~xabe 0>: W~l ha wb` ew`th

slah lygt`xlt & & {

m l n o e w ` t h =kwxgv2 m ln o &∕k ?~x`ky`& xg~x l ?

Ytgna~a`kl wb` nl~` ygtil"""Am c`xxl nfg m` ew`th dmlnnfa am kwxgv blb akyman` nfg m‑abxgtl ytlet`kk` blb sgb+

e` xgtkab`xl"""abc xxa hlyl `sgt ~dmlnn xl am kwxgv ytly e` m‑gnngzalbg egbgt x` ` masgmml ~wygtaltg g ~g blb n‑ig wb n xnf ` masgmml ~wygtaltg pwg~xl gpwas`mg `m m` xgtkab`zalbg hgm ytlng~~l y`htg

Pwabha ~g na makaxa`kl ` ew`th`tg pwg~xa ~bayygx m‑g~gkyal nlb m` eg~xalbg k`bw`mgcwbzalb` kgemal ha pwgmml nlb m` mlno k` bgm n`~l egbgt mg m‑w~l hgmm` mlno ig nlklhlygtnfg na ygtkgxxg ha ~ntasgtg nlhana y gt m` eg~xalbg hgmmg gnngzalba nfg blb xgbelblnlbxl hgm kwxgv"

7 W~l `s`bz`xl hga Kwxgv

Bgmm‑`txanlml ytgnghgbxg fl y`tm`xl hgm kwxgv g hgm ~wl w~l ~gkymang nlb m` mlno ew`th"ab pwg~xl xt`xxgtil ema `mxta xaya ha ew`th g m‑w~l `s`bz`xl hga kwxgv

06

Page 19: Multithreading e programmazione funzionale in Cpp0X -C++11

5/16/2018 Multithreading e programmazione funzionale in Cpp0X -C++11 - slidepdf.com

http://slidepdf.com/reader/full/multithreading-e-programmazione-funzionale-in-cpp0x-c11

wbapwg mlnoNlb wbapwg mlno wb kwxgv ywil c`tg klmxl ha yaiw ha pwgmml nfg ygtkgxxg m` mlno ew`th

․ ^a ywil ngtn`tg ha ytgblx`tml ab k`bagt` blb dmlnn`bxg & ~g ig madgtl ml ~a lnnwy`-~g blb ig madgtl blb ~a `xxgbhg

․ ^a ywil ngtn`tg ha ytgblx`tml cltbgbhl wb xakglwx k`~~akl ha `xxg~` & ~g ~axt`xx` ha wb xakgh kwxgv lssa`kgbxg

․ ^a ywil `nnghgtg hatgxx`kgbxg `mmg cwbzalba hgm kwxgv

g wb ~`nnl ha `mxtg nl~g ygt mg pw`ma sa tak`bhl ` wb` tgcgtgbng >

7"0 Xakgh kwxgv g m ytgblx zalbg nlb xakglwx k`~~akl

Ha~ylbgbhl ha wb xakgh kwxgv ylxtgkkl ygt g~gkyal g~gewatg pwg~xl:

Ma~xabe 08: W~l ha wb xakgh kwxgv

~xh : : xakgh kwxgv k?~ x h : : w b a p w g m l n o =~x h : : xakgh kwxgv2

m o &k- ~ x h : : n f t l bl : : k a m m a ~ g n l b h ~ & 7 ?

a c & mo ulto&

Pwg~x` cwbzalbg ytls` `h `nnghgtg `m kwxgv `~ygxx`bhl k`~~akl 7 kamma~gnlbha- ams mltg hgmm` mlno ~a w~` y gt hgxgtkab`tg ~g m‑`nng~~l ig `ssgbwxl l bl

7"4 @nng~~l `mmg cwbzalba abxgtbg hgm kwxgv

@xxt`sgt~l m` wbapwg mlno yl~~a`kl `nnghgtg `mmg cwbzalba hgm kwxgv- k` pwg~x` slmx` mggnngzalba ~lbl eg~xaxg"

Ma~xabe 07: @nng~~l `mmg cwbzalba abxgtbg

~x h : : kwxgv k?slah z l b ` n t a x a n ` & {

~ x h : : w b a p w g m l n o =~xh : : kwxgv2 mo &k ?, , a b p w g ~ x l klkgbxl a m k wx gv ig l n n w y ` x lm o " wbm lno & ?, , a b p w g ~ x l klkgbxl a m k wx gv ig m a d g t lm o " m l n o & ?, , a b p w g ~ x l klkgb xl a m k wx gv ig h a b w ls l l n n w y ` x l

>fxxy:,,uuu"~xhxftg`h"nl"wo, & ml ~l- blb ig wna`mg""" k` blb fl xtls`xl ha kgemal !

01

Page 20: Multithreading e programmazione funzionale in Cpp0X -C++11

5/16/2018 Multithreading e programmazione funzionale in Cpp0X -C++11 - slidepdf.com

http://slidepdf.com/reader/full/multithreading-e-programmazione-funzionale-in-cpp0x-c11

Ma~xabe 03: Nl~xtwxxltg blb dmlnn`bxg

~x h : : kwxgv k?slah z l b ` n t a x a n ` & {

~ x h : : w b a p w g m l n o =~xh : : kwxgv2 m o &k- ~ x h : : h g c g t m l n o x & ?, , a b p w g ~ x l klkgbxl a m k wx gv ig m a d g t lm o " m l n o & ?, , a b p w g ~ x l klkgbxl a m k wx gv ig l n n w y ` x lm o " wbm lno & ?, , a b p w g ~ x l klkgbxl a m k wx gv ig h a b wl sl m a d g t l

7"4"0 Ytgblx`zalbg kwmxaym

Wb ytldmgk` klmxl nlkwbg bgmm` ytlet`kk`zalbg nlbnlttgbxg ig m` bgng~~ax` h` y`txgha wb ytlng~~l ha `nnghgtg ab k`bagt` g~nmw~as` ` yaiw ta~lt~g- ig wb ytldmgk` nfg ~geg~xaxl k`mg ywil n`w~`tg c`namkgbxg hg`hmlno l ~x`ts`xalb ab pw`bxl ~g wb ytlng~~l nfgf` `npwa~axl y`txg hgmmg ta~lt~g bgng~~`tag `xxgbhg `mxtg ta~lt~g ygt nlbxabw`tg g pwg~xgta~lt~g ~lbl dmlnn`xg h` `mxta ytlng~~a `bnfg mltl ab `xxg~` xwxxa a ytlng~~a tg~x`bl dmlnn`xaab `xxg~` m‑wbl hgmm‑`mxtl- ab pwg~xl n`~l mg ~xm na sgbelbl ab `awxl h`bhlna wb nl~xtwxxlnfg ygtkgxxg ha dmlnn`tg b kwxgv tg~x`bhl ab `xxg~` k` blb dmlnn`bhlma

Ma~xabe 05: Ytgblx`zalbg kwmxaym`

slah ytgb lx` & ~xh : : kwxgv ∕` - ~x h : : kwxgv ∕` {~ x h : : w b a p w g m l n o =~xh : : kwxgv2 m l n o ` &∕` - ~ x h : : h g c g t m l n o ?~ x h : : w b a p w g m l n o =~xh : : kwxgv2 m l n o d &∕d - ~ x h : : h g c g t m l n o ?~ x h : : m l n o & m l n o ` - m l n o d ?

,, c ` a p w` mn l~ ` h a n t a x a n l

49

Page 21: Multithreading e programmazione funzionale in Cpp0X -C++11

5/16/2018 Multithreading e programmazione funzionale in Cpp0X -C++11 - slidepdf.com

http://slidepdf.com/reader/full/multithreading-e-programmazione-funzionale-in-cpp0x-c11

3 Am ytldmgk` hga 7 ffml~lff

Wb ytldmgk` klmxl abxgtg~~`bxg nfg ammw~xt` m` ylxgbza`maxi ha pwg~xl nl~xtwxxl ig am ytl+dmgk` hga 7 ffml~lff ` ngb`- g~~l ig ~x`xl cltkwm`xl h` Hajo~xt` abxltbl `m 0137- ygt kgxxgtg`mm` ytls` mg ytakaxasg ha ~abntlbazz`zalbg hgmm‑gyln` & a ~gk`clta clbh`kgbx`mkgbxg amytldmgk` ig pwg~xl &naxl h`m xg~xl ha ^amdgt~nf`xz :

^a nlb~ahgtabl nabpwg ffml~lff nfg y`~~`bl m` sax` ygb~`bhl g k`bea`bhl"A ffml~lff nlbhasahlbl wb x`slml tlxlbhl natnlbh`xl h` nabpwg ~ghag- wb` ygt 

na`~nwb ffml~lcl" @m ngbxtl hgm x`slml ~a xtls` wb` zwyyagt` nlmk` ha ta~l- g m` 

x`slm` ig `yy`tgnnfa`x` nlb nabpwg d`nnfgxxg" Pw`bhl wb ffml~lcl ygb~`- blb

abxgt`ea~ng nlb a nlmmgefa? pw`bhl ema sagbg c`kg- xgbx` ha ytgbhgtg mg d`n+

nfgxxg yaiw sanabg: pwgmmg nfg ~a xtls`bl xt` mwa g a nlkkgb~`ma `mm` ~w` hg~xt` g 

`mm` ~w` ~aba~xt`" Wb ffml~lcl ywil ytgbhgtg wb` d`nnfgxx` `mm` slmx` g blb ywil

 ytgbhgtg wb` d`nnfgxx` nfg ~a xtls eai bgmmg k`ba ha wb ~wl sanabl" Pw`b+

hl wb ffml~lcl ``k`xl xagbg ab k`bl hwg d`nnfgxxg nlbxgkylt`bg`kgbxg-

k`bea` ~gbz` m`~na`tg mg d`nnfgxxg" Xgtkab`xl am y`~xl- mg yl~` g taytgbhg ` 

 ygb~`tg"

‛Am ytldmgk` hga nabpwg ffml~lff ig nlb+~ahgt xl wb nm ~~anl ytldmgk` ha ~abntl+bazz`zalbg- blb ngtxl ygt m` ~w` ak+yltx bz` yt`xan`- g bg`bnfg ygt `bxay`+xa sgt~l a ffml~lff h` y`txg hgema abclt+k`xana- k` ygtnfg t`yytg~gbx` wb` s`+~x` nm`~~g ha ytldmgka ha nlbxtlmml hgm+m` nlbnlttgbz - ab y`txanlm tg a ytldmg+ka n`t xxgtazz`xa h`mm bgng~~axi ha `~~g+eb`tg s`tag ta~lt~g ` hasgt~a ytlng~~a gsa+x`bhl ~axw`zalba ha ~x mml g h‑`xxg~` ab+

hgffbax`"‛8 m` y`tlm` ~x`ts`xalb hgta+s` ytlytal h` pwg~xl ytldmgk """ ~gblb ~a tag~ng ` eg~xatg m` nl~` a ffml~lffkwlalbl ha c`kg & xl ~x`tsg ab abemg+~g

3"0 S ta `yytlnna abegbwa

Wb` ~gkymang ~lmwzalbg nlb~a~xg bgm t`yytg~gbx`tg leba d`nnfgxx` nlb wb kwxgv:

wb ffml~lcl xgbx` ha `gtt`tg na`~nwb` d`nnfgxx` g~gewgbhl wb‑lygt`zalbg mlno 

~w pwgm kwxgv g m` yl~` g~gewgbhl wb` wbmlno"

8Y`tlm` ha ^amdgt~nf`xz- nfg blb kg bg slema`bl ema `kana ffml~lff

40

Page 22: Multithreading e programmazione funzionale in Cpp0X -C++11

5/16/2018 Multithreading e programmazione funzionale in Cpp0X -C++11 - slidepdf.com

http://slidepdf.com/reader/full/multithreading-e-programmazione-funzionale-in-cpp0x-c11

Y`txgbhl h` pwg~xl klhgmml yl~~a`kl nlkabna`tg ` ngtn`tg wb` ~lmwzalbg- pwgmm` yaiwakkgha`x` ylxtgddg g~gtg:

wb ffml~lcl ytgbhg m` d`nnfgxx` ` hg~xt`- yla pwgmm` ` ~aba~xt` g yla k`bea`"

k` nl~ ~wnnghg ~g xwxxa ytgbhlbl nlbxgkylt`bg`kgbxg m` cltnfgxx` ha hg~xt`< wbhg`hmlno- kwlalbl ha c`kg `~ygxx`bhl nfg pw`mnwbl madgta pw`mnl~` k` bg~~wbl madgtgtik`a bagbxg"

wb‑`mxt` ~lmwzalbg ylxtgddg g~~gtg:

Wb ffml~lcl ha bwkgtl y`ta ytgbhg ytak` m` cltnfgxx` ha hg~xt` g yla pwgmm` ha ~aba~xt`- wb ffml~lcl ha~y`ta am nlbxt`tal

K` pwg~xl ig d`t`tg-~n`txa`klm`Na tgbha`kl nlbxl nfg wb ffml~lcl hgsg tam`~na`tg m` d`nnfgxx` ~g blb ywil ytgbhgtg m`

~gnlbh`- pw`mnl~` hgm xayl

Wb ffml~lcl ytgbhg m` d`nnfgxx` ha hg~xt - yla ngtn` ha ytgbhgtg pwgmm ha ~aba~xt` & xtqmlno ! g ~g blb ywil mg yl~` gbxt`kdg g taytls` ab ~gewaxl

k` nfg ~wnnghg ~g a ffml~lff y`txlbl ab~agkg< m‑`meltaxkl s` ab mlly: xwxxa ytgbhlblpwgmm` ha hg~xt`- bg~~wbl ywil ytgbhgtg pwgmm` ` ~aba~xt`- xwxxa yl~`bl xwxxl g ~a tanlkabna`-mg lygt`zalba bgng~~ax`bl ha g~~gtg g~gewaxg ab k`bagt` `xlkan`

3"4 Wb` ~lmwzalbg cwbzalb`bxg

Wb ffml~lcl ngtn` ha ytgbhgtg gbxt`kdg mg d`nnfgxxg nlbxgkylt`+bg`kgbxg- ~g blb ywil `~ygxx`

Pwg~xl nlkyltx`kgbxl blb ywil g~~gtg nl~xtwaxl hatgxx`kgbxg w~`bhl a ~abelma kwxgv-k` yl~~a`kl c`tml nlb am bl~xtl ~xh::mlno&mlno `-mlno d!

M` ~lmwzalbg xt`hazalb`mg bgng~~ax` hgmm` nl~xtwzalbg ha wb Klbaxlt- k` blb kg bglnnwygtil pwa- ~ctwxxa`kl ` yagbl mg ~xm g tahwna`kl am ytldmgk` ` wb` nl~` d`b`mg- nlbdwlb` y`ng ha Hajo~xt`7

7

^g ~agxg abxgtg~~ xa `mm sgt~albg ltaeab`mg hgm ytldmgk` ha Hajo~xt` -ta~lmx` abxgt`kgbxg nlba ~gk clta- ylxgxg h`tg wb lnnfa x ` pwg~xl xg~xl ~w ellemg hln~ fxxy:,,ell"em,13Z`V - ~gyla `sgxg `bnfg abxgtg~~a `tnfglmleana n‑ig m` ~n`b~albg hgmm` sgt~albg ltaeab`mg h`xxaml~ntaxx` pwafxxy:,,uuu"n~"wxgv`~"ghw,rGUH,guh9>vv,GUH>09"YHC

44

Page 23: Multithreading e programmazione funzionale in Cpp0X -C++11

5/16/2018 Multithreading e programmazione funzionale in Cpp0X -C++11 - slidepdf.com

http://slidepdf.com/reader/full/multithreading-e-programmazione-funzionale-in-cpp0x-c11

Ma~xabe 06: Am ytldmgk` hga 7 ffml~lff ha Hajo~xt`

" " "n m ` ~ ~ C a m l ~ l c l {ywdman :

a bx a h ?kwxgv ∕ h g ~ x t ` ?

kwxgv ∕ ~ a b a ~ x t ` ?C a m l ~ l c l & a bx b - kwxgv ∕h - kwxgv ∕ ~ {ah;b?hg~xt`; h?~ a b a ~ x t ` ;~ ?

slah y g b ~ ` & {~ x t a b e ` t el k gb x a _ 7 [ ; {

‛ @ m m ` c `k g b g m klbhl ‛ -‛@m ywbxl E‛ -‛ @ m m l t a e a b g h g m m W ba sg t~ l ‛ -‛ @m ~ g b~ l h g m m ` s a x ` ‛ -

‛ @ m m ` h lk`bh` m ` n w a t a ~ y l ~ x ` g ‑ 8 4‛ ?nlwx == a h == ‛ : ^ xl y gb ~` b hl " " " ‛ == `telkg bxa _ ah [ == gbhm ?w ~ m g g y & 0 9 99 9 ∕ & t` bh & ' 19 / 09 ?

?

slah k`bea`& {y t a b x c & ‛'h : N g tn l m g d ` n n f g x x g " " " ] b‛ - ah ?~ x h : : w b a p w g m l n o =~x h : : kwxgv2 m l n o ` &∕ h g ~ xt ` - ~ x h : : h g c g t m l n o ?~ x h : : w b a p w g m l n o =~x h : : kwxgv2 m l n o d &∕ ~ a b a ~ x t ` - ~ x h : : h g c g t m l n o ?~ x h : : m l n o & m l n o ` - m l n o d ?yt a b xc &‛'h : ^xl k`bea`bhl " " " ] b‛ - ah ?w ~ m g g y & > 9 99 9 ∕ & t` bh & ' 19 / 09 ?

y t a b x c & ‛'h : Yl ~l m g d ` nn f gx x g - ~ ` z a l ]b‛ - ah ? ?

slah lygt`xlt & & {y t a b x c & ‛'h : Y gb ~l p w a b h a ~ l bl ]b‛ - ah ?w ~ m g g y & > 9 99 9 ∕ & t` bh & ' 19 / 09 ?cl t & a bx ` ;9 ? ` =7? `// {

y g b ~ ` & ?k`bea` & ?

?" " "

4>

Page 24: Multithreading e programmazione funzionale in Cpp0X -C++11

5/16/2018 Multithreading e programmazione funzionale in Cpp0X -C++11 - slidepdf.com

http://slidepdf.com/reader/full/multithreading-e-programmazione-funzionale-in-cpp0x-c11

5 Mg Nlbhaxalb- akymgkgbx`zalbg hgmmg nlhg ha `xxg~`

5"0 Mg Nlbhaxalb

Mg Nlbhaxalb ~lbl wb kgnn`ba~kl ha ~abntlbazz`zalbg nfg ygtkgxxg `a xftg`h ha ~l~ygb+hgt~a ab `xxg~` nfg `ssgbe` wb gsgbxl g ha g~~gtg ta~sgema xa pw`bhl m‑gsgbxl `nn`hg-ygtkgxxlbl pwabha ha ntg`tg hgmmg nlhg ha `xxg~`"

Bgmmg ^XM mg nlbhaxalb ~lbl leegxxa hgmm` nm`~~g ~xh::nlbhaxalb s`ta`dmg"A kgxlha clbh`kgbx`ma ygt w~`tmg ~lbl xtg:

u`ax&ygtkgxxg ha `nnlh`t~a `mm` nlbhaxalb

blxacq lbg& blxacq `mm&ygtkgxxlbl ha ta~sgema`tg wbl l xwxxa a xftg`h ab `xxg~` ~wmm` nlh` &bgmm‑akymgkgb+x`zalbg xt`hazalb`mg hga yxftg`h ~a nfa`k`s`bl ~aeb`m g dtl`hn`~x

@ wb` Nlbhaxalb ig ~gkytg `~~lna`xl wb kwxgv ygt gsax`tg t`ng nlbhaxalb nfg ylxtgddgntg`tg wb xftg`h nfg ~a ~x` ytgy`t`bhl ` wb` u`ax kgbxtg wb `mxtl xftg`h g~gewg wb`

~aeb`m- m` ~aeb`m ylxtgddg abc`xxa `ssgbatg nlbxgkylt`bg`kgbxg `mm` u`ax g sgbatg pwabhaygt~` ntg`bhl wb hg`hmlno- ywil g~~gtg w~`xl wb kwxgv pw`mwbpwg l ~a ywil ntg`tg wbkwxgv ytlytal hgmm` nlbhaxalb

Sgha`klbg am cwbzalb`kgbxl nlb wb ~gkymang nlhang:

Ma~xabe 01: 09 xftg`h ~a kgxxlbl ab nlh` ~w wb` nlbhaxalb g wb `mxtl xftg`h ma ~sgema`wbl ygt slmx`

.abnmwhg =a l ~ x t g ` k2

.abnmwhg =xftg`h2

.abnmwhg =n ~ x h m a d 2

.abnmwhg =kwxgv2

.abnmwhg =n l b h a x a l b s ` t a ` d m g 2

w~ab e b`kg~y ng ~xh ?

n m ` ~ ~ Ultogt{ywdman :

a bx bwkgtl?~ x h : : n l b h a x a l b s ` t a ` d m g ∕nlh` ?kwxgv ∕k?Ultogt& a bx b - ~ x h : : n l b h a x a l b s ` t a ` d m g ∕nlbh - kwxgv ∕kxv{

nlh `;nlbh ?

bwkgt l;b ?k;kxv ?

48

Page 25: Multithreading e programmazione funzionale in Cpp0X -C++11

5/16/2018 Multithreading e programmazione funzionale in Cpp0X -C++11 - slidepdf.com

http://slidepdf.com/reader/full/multithreading-e-programmazione-funzionale-in-cpp0x-c11

slah lygt`xlt & & {

nlwx == ‛Xftg`h‛== bwkgtl == ‛ ` m m l n ` x l - ka kg xx l a b n lh `‛ == gbhm ?~ x h : : w b a p w g m l n o =~x h : : kwxgv2 m o &∕k ?nlh`∔2u`ax & mo ?nlwx == ‛Xftg`h‛== bwkgtl == ‛ t a ~ s g e m a ` x l h ` mm ` nlh` ‛ == gbhm ?

?

abx k`ab&{

~ x h : : n l b h a x a l b s ` t a ` d m g ∕nlh`; bgu n l b h a x a l b s ` t a ` d m g & ?kwxgv ∕k; bgu kwxgv & ?a bx ` ?

~xh : : xftg` h ∕ x f t g `h ~ _ 0 9 [ ?

cl t &`; 9? `=09?`//{, , n t g lx f t g ` h ~ _ ` [; bgu ~xh : : xftg` h &Ultogt& `/ 0- nlh` -k ?w ~ m g g y & 0 99 99 9 ?

cl t &`; 9? `=09?`//{,, ~ s g e m a l

w ~ m g g y & 0 9 99 ∕ & t `b h & ' 1 9 9 ?nlh`∔2b l x a c q l b g & ?

cl t &`; 9? `=09?`//,, ~ y g x x l x g t k ab g{

x f t g ` h ~ _ ` [∔2 j l a b & ?hgmgxg & xft g` h~ _ ` [ ?

?

5"4 K` mg nl~g blb ~lbl nl~iİ ~gkymana"""․ K met`hl ha ~lmaxl blb ~wnngh` mg ~ygnaffnfg hga yxftg`h blb e`t`bxa~nlbl nfg

m‑lthabg ab nwa a xftg`h ~a ~sgemabl ~a` wew`mg ` pwgmml ab nwa ~a `hhltkgbx`bl-pwabha ab n`~l ha `yyman`zalba hlsg m‑lthabg hgema `nng~~a ig akyltx`bxg pwg~xl s`sgtaffn`xl g~ymanax`kgbxg"

․ Wb `mxt` nl~` nfg ylxtgddg ~wnnghgtg & g pwg~x` ig yaiw et`sg ig nfg yaiw ha wb xftg`hsgbe` madgt`xl h`mm` nlh`- pwabha a xftg`h `yygb` ~sgema`xa hgslbl ha bwlsl sgtaffn`+tg nfg m` nlbhazalbg nfg ma f` c`xxa `nnlh`tg ~a` ~x`x` ~lhha~c`xx` gh gsgbxw`mkgbxgtakgxxgt~a ab nlh`"

47

Page 26: Multithreading e programmazione funzionale in Cpp0X -C++11

5/16/2018 Multithreading e programmazione funzionale in Cpp0X -C++11 - slidepdf.com

http://slidepdf.com/reader/full/multithreading-e-programmazione-funzionale-in-cpp0x-c11

6 Am ytldmgk` hgm d`tdagtg `hhltkgbx`xl

Sgha`kl wb `yyman`zalbg hgmmg nlbhaxalb ` wb ytldmgk` yaiw nlkymg~~l- am ytldmgk` hgmd`tdagtg `hhltkgbx`xl ha Hajo~xt`" am ytldmgk` ig hgffbaxl ab pwg~xl klhl:

Wb bgelzal ha d`tdagtg ig nl~xaxwaxl h` wb` ~`m` nlb wb` ~lm` ylmxtlb` ~wmm` pw`mg ~a `nnlklh` am nmagbxg nfg sagbg ~gtsaxl g h` wb` ~`m` h‑`xxg~` nlb 

b ~ghag" ^g blb na ~lbl nmagbxa h` ~gtsatg am d tdagtg s` ` hltkatg" ^g `ttas` wb nmagbxg g xwxxg mg ~ghag hgmm` ~`m` h‑`xxg~` ~lbl lnnwy`xg- am nmagbxg s` sa`-kgbxtg- ~g n‑ig wb` ~gha` madgt` g am d`tdagtg ig lnnwy`xl- am nmagbxg `xxgbhgti-~ghwxl- am ytlytal xwtbl" ^g am d`tdagtg ~x` hltkgbhl &nalig ig madgtl- ~gbz` nmagbxa ab `xxg~`!- am nmagbxg ml ~sgema` g sagbg ~gtsaxl ~wdaxl"

M` ~lmwzalbg ig yaiw ytlma~~` ha pwgmml nfg ylxtgddg ~gkdt`tg ` ytak` sa~x`- xt`m`mxtlbgmm‑akymgkgbx tml fl a~xabxas kgbxg w~`xl wb klbaxlt `bnfg ~g blb fl `nngbb`xl `pwg~xl xayl ha nl~xtwxxa- bg hl ~lmx`bxl wb` dtgsg hgffbazalbg LLY

Wb klbaxlt ig wb leegxxl nfg abn`y~wm` m` ta~lt~` gh g~ylbg a kgxlha ygt`nnghgtsa ab k`bagt` ~anwt`

Ab pwg~xl n`~l- nlkg ~a sghg bgm ~ltegbxg ~lxxl~x`bxg- am nlbx`xltg hgmmg ~ghag lnnwy`xg

ig b`~nl~xl hgbxtl m` nm`~~g ^x`bz` nfg kgxxg ` ha~yl~azalbg a kgxlha ygt lnnwy tg gmadgt`tg wb` ~gha` k`bxgbgbhlma ~abntlbazz`xa `xxt`sgt~l wb ~gk`cltl ytlytal hgmm` nm`~~g"

M‑`yytlnnal nfg fl wxamazz`xl ig pwg~xl:

6"0 Am d tdagtg

0" Nlbxtlmm ~g na ~lbl nmagbxa ab `xxg~` &`xxt sgt~l a kgxlha hgm Klbaxlt

4" ~g blb ng bg ~lbl ~a `hhltkgbx` & ~sgema`bhl~a `m ywbxl >

>" ~g ng bg ~lbl ma t`hg g xltb` `m ywbxl 0

m` t`~`xwt` nlb~a~xg ab:

․ madgt`tg wb Nmagbxg h`mm` nlh` hgmm` ~`m` ha `xxg~` &`xxg~`"blxacq lbg - am nmagbxgmadgt`xl lnnwy` m` nlh` hgmm` ylmxtlb`

․ t`hgtg am Nmagbxg- madgt`tml h`mm` nlh` hgmm` ylmxtlb` &ylmxtlb`"blxacq lbg&

6"4 Am nmagbxg

0" Gbxt` bgmm` ~`m`- ngtn` ha ~ghgt~a

&` ^g ywil ~ghgt~a:

a" ^g ig m‑wban` ygt~lb` ~ghwx` ~sgema` am d`tdagtg &mgxxl"blxacq lbg&aa" s` `m ywbxl 4

&d ^g blb ywil ~ghgt~a g~ng h`mm` ~`m` g s` `m ywbxl 7

43

Page 27: Multithreading e programmazione funzionale in Cpp0X -C++11

5/16/2018 Multithreading e programmazione funzionale in Cpp0X -C++11 - slidepdf.com

http://slidepdf.com/reader/full/multithreading-e-programmazione-funzionale-in-cpp0x-c11

4" ^a kgxxg ab `xxg~` bgmm` nlh` hgmm` ~`m` &`xxg~`"u`ax&mo

>" wb` slmx` ~sgema`xl lnnwy` am d`tdagtg &d`tdagtg∔ 2 mlno& g ~a kgxxg ab `xxg~`~wmm` ~gha` hgmm` ylmxtlb` & ylmxtlb`"u`ax&∕d`tdagtg" am kwxgv ~wm d`tdagtg gsax`am ytldmgk` ha wb` yl~~adamg ~aeb`m blb slmwx` & sgha ~lyt` am y`t`et`cl 5"4 wb`slmx` ~sgema`xl madgt` am d`tdagtg gh g~ng h`mm` ~`m`

8" s` ab eatl ` daefgmmlb`tg g yla xltb` `m ywbxl 0

Ab pwg~x` akymgkgbx`zalbg ~lbl yl~~adama hgmmg ~aeb`m ~wygtfflwg ~w wb d`tdagtg eai~sgemal- k` ~lbl attamgs`bxa

6"> Nlhang nlkymgxl

Ma~xabe 49: Ytldmgk` hgm d`tdagtg `hhltkgbx`xl

.abnmwhg =a l ~ x t g ` k2

.abnmwhg =xftg`h2

.abnmwhg =n ~ x h m a d 2

.abnmwhg =kwxgv2

.abnmwhg =n l b h a x a l b s ` t a ` d m g 2

w~ab e b`kg~y ng ~xh ?

abx hltka & c m l ` x d`~g - c m l ` x s ` t a ` d a m g {

a bx o; 0999∕0999?a bx d ` ~ g a ; & a bx d`~ g ∕o ?a bx s ` t a ` d a m g a ;9?a c & s ` t a ` d a m g 29 s ` t a ` d a m g a ; t ` b h & ' & a bx & s ` t a ` d a m g ∕o ?w ~ m gg y & d ` ~ g a/ s ` t a ` d a m g a ?tgxwtb d ` ~ g a/s ` t a ` d a m g a ?

?

n m ` ~ ~ ^x`bz`{ytas`xg :

a bx lnnwy`xg ?~x h : : kwxgv klbaxlt k ?

ywdman :

~ x h : : n l b h a x a l b s ` t a ` d m g ` x x g ~ ` ?

~xh : : kwxgv `xxg ~` k ?~ x h : : n l b h a x a l b s ` t a ` d m g y l m xt l b ` ?~ x h : : n l b h a x a l b s ` t a ` d m g m g x x l ?~xh : : kwxgv d`t da g tg ?a bx ~ g h a g ?

45

Page 28: Multithreading e programmazione funzionale in Cpp0X -C++11

5/16/2018 Multithreading e programmazione funzionale in Cpp0X -C++11 - slidepdf.com

http://slidepdf.com/reader/full/multithreading-e-programmazione-funzionale-in-cpp0x-c11

a bx ytgblx` &{

~ x h : : w b a p w g m l n o =~x h : : kwxgv2 mo & klbaxlt k ?a c & l n n w y ` x g2;~g ha g tgxwtb ∔0?lnnwy`xg//?nlwx == l n n w y ` x g == ‛ ~ g h a g l nn wy `x g ‛==gbhm ?

tgxwtb lnnwy`xg ?

a bx e w ` t h ` & {

~ x h : : w b a p w g m l n o =~x h : : kwxgv2 mo & klbaxlt k ?tgxwtb lnnwy`xg ?

a bx m a d g t ` & {

~ x h : : w b a p w g m l n o =~x h : : kwxgv2 mo & klbaxlt k ?lnnwy`xg∔∔?nlwx == l n n w y ` x g == ‛ ~ g h a g l nn wy `x g ‛==gbhm ?tgxwtb lnnwy`xg ?

^ x ` b z ` & a bx b ~ g h a g {

xfa~∔2~ g h a g ;b ~ g h a g ?lnnwy`xg; 9?

?

n m ` ~ ~ D ` t d a g t g

{ywdman :

a bx bwkgtl?a bx ` z a l b a ?^x`bz` ∕ ~ x ` b z ` ?~ x h : : w b a p w g m l n o =~x h : : kwxgv2 ∕ d ` t d a g t g ?D ` t d a g t g & ^ x ` b z` ∕ ~ x {

` z a l b a ; 9?xfa~∔2~x`b z`;~x ?d ` t d a g t g ; bgu ~ x h : : w b a p w g m l n o =~xh : : kwxgv2&~x`bz`∔2d ` t d ag t g - ~ x h : : h g c g t

slah lygt`xlt & & {

46

Page 29: Multithreading e programmazione funzionale in Cpp0X -C++11

5/16/2018 Multithreading e programmazione funzionale in Cpp0X -C++11 - slidepdf.com

http://slidepdf.com/reader/full/multithreading-e-programmazione-funzionale-in-cpp0x-c11

ufamg & xtwg {

nlwx == ‛ D` td ag tg n l b xt l m m` ~ g n a ~lbl n m a g b x a a b ` xx g ~` ‛==gbhm ?

a c & ~x`bz`∔2ew`th`&;;9{

nlwx == ‛ D ` t d a g t g ~ a ` hh lt kg bx `‛==gbhm ?~ x h : : w b a p w g m l n o =~xh : : kwxgv2 mo & ~x`bz`∔2d ` t d a g t g ?

~x`bz`∔2m g xx l " u`a x & m o ?

nlwx == //`zalba ==‛ D ` td a gt g ~ g t s g wb n m a g b x g ‛==gbhm ?~x`bz`∔2` x x g ~ ` " b l x a c q l b g & ?hltka & 4 - 4 ?~x`bz`∔2y l m x t l b ` " b l x a c q l b g & ?

?

n m ` ~ ~ N m a g b x g{ywdman :

a bx bwkgtl?^x`bz` ∕ ~ x ` b z ` ?~ x h : : w b a p w g m l n o =~x h : : kwxgv2 ∕ d ` t d a g t g ?N m a g b x g & ^ x ` b z` ∕ ~ x - a bx b {

~x`b z`;~x ?bwkgt l;b ?d ` t d a g t g ; bgu ~ x h : : w b a p w g m l n o =~xh : : kwxgv2&~x`bz`∔2d ` t d ag t g - ~ x h : : h g c g t

slah ulto&{nlwx == ‛Xftg`h‛== bwkgtl == ‛ ` m m ln ` x l - g bx t` h `m d ` td a gt g ‛ == gbhm ?a bx ~;~x`bz`∔2y t g b l x ` & ?

a c & ~ =9{

nlwx == ‛Xftg`h‛== bwkgtl == ‛ x w xx g m g ~ g h ag ~ lbl l nn wy `xg - g ~ ng ‛tgxwtb ?

g m ~ g{

a c & ~ 29

{nlwx == ‛Xftg`h‛== bwkgtl == ‛ ~ a ~ a gh g g ` ~y gx x` ‛ == gbhm ?a c  & ~ ;;0

41

Page 30: Multithreading e programmazione funzionale in Cpp0X -C++11

5/16/2018 Multithreading e programmazione funzionale in Cpp0X -C++11 - slidepdf.com

http://slidepdf.com/reader/full/multithreading-e-programmazione-funzionale-in-cpp0x-c11

{nlwx == ‛Xftg`h‛== bwkgtl == ‛ ~ s g em a ` a m d `t da gt g ‛ == gbhmhltka &0 - 9 ?~x`bz`∔2m g x x l " b l x a c q l b g & ?

~ x h : : w b a p w g m l n o =~xh : : kwxgv2 mo & ~x`bz`∔2` x x g ~ ` k ?~x`bz`∔2`x xg ~` " u`a x & m o ?nlwx == ‛Xftg`h‛== bwkgtl == ‛ ~ a ` mz ` ‛ == gbhm ?

~x`bz`∔2m a d g t ` & ?

d ` t d a g t g∔2m l n o & ?nlwx == ‛Xftg`h‛== bwkgtl == ‛ ~ a ~ a gx g g ~ a c ` t `~ `t g‛ == gbhm ?~x`bz`∔2ylm x tlb` " u`a x &∕ d ` t d a g t g ?d ` t d a g t g∔2w b m l n o & ?nlwx == ‛Xftg`h‛== bwkgtl == ‛ g ~ n g ‛ == gbhm ?

slah lygt`xlt & & {

cl t & a bx ` ;9 ? ` =4? `//{

ulto & ?nlwx == ‛Xftg`h‛== bwkgtl == ‛ s` a b e a t l ` d a e fg m ml b ` tg ‛ == gbhm ?hltka &> 9 - >9 ?

nlwx == ‛Xftg`h‛== bwkgtl == ‛ kwltg‛ == gbhm ?

?

abx k`ab& a bx `ten - nf`t∕∕ ` t e s

{ ^ x `b z ` ~ x ` b z ` & 7 ?a bx ` ?

~xh : : xftg` h ∕ x f t g `h ~ _ 0 7 [ ?

~xh : : xftg` h ∕ d ` t d a g t g ;bgu ~ x h : : x f t g ` h & D ` t d a g t g &# ~ x ` b z ` ?cl t & ` ; 9 ? ` =07? `// , , n t g l{

hltka &9 - ` ?x f t g ` h ~ _ ` [; bgu ~xh : : xftg`h & Nm a gbx g&# ~x`bz` - / 0 ?

cl t & ` ; 9 ? ` =07? `// , , ~ y g x x l x g t k ab g

{x f t g ` h ~ _ ` [∔2 j l a b & ?hgmgxg & xft g` h~ _ ` [ ?

>9

Page 31: Multithreading e programmazione funzionale in Cpp0X -C++11

5/16/2018 Multithreading e programmazione funzionale in Cpp0X -C++11 - slidepdf.com

http://slidepdf.com/reader/full/multithreading-e-programmazione-funzionale-in-cpp0x-c11

?

@ @kdagbxg ha ~samwyyl g ytldmgka ha nlkyam`zalbg

Pwg~x` ig m` y`txg yaiw ‑ab~x`damg‑ hgm xwxlta`m: nlkg ~a nlkyam` am nlhang Nyy9V" Pw`bhlfl abnlkabna`xl ` ~ntasgtg m` ~gtag ha `txanlma m` dlzz` hgm ytlegxxl gt` `bnlt` ab c`~g

ha `yytls`zalbg h` y`txg hgmm‑A^L- `hg~~l nfg ~xl ffbgbhl ha ntg`tg wb xwxlta`m h`a kagayl~x ~wm dmle ig wbl ~x`bh`th `yytls`xl k` `bnlt` ab c`~g ha haw~albg" Mg nl~g ~lbln`kda`xg g nlbxabw`bl ` n`kda`tg"

@"0 EBW Enn + e//

Am nlkyam`xltg nfg fl w~`xl ab xwxxa a nlhana- ~wyyltx` am bwlsl ~x`bh`th `xxt`sgt~l am ffl`e+~xh;n//9v & h` e// lssa`kgbxg Mg cwbzalba ~lbl abnmw~g bga nlkyam`xlta EBW `y`txatg h`mm` 8"7

@"0"0 KabEu

G‑ yl~~adamg nlkyam`tg y`txg hga ~ltegbxa w~`bhl KabEu

3

nfg ig wb yltxabe uabhlu~ haenn- am ~wyyltxl ha nlkyam`zalbg ig nlkymgxl kgbxtg blb ml ig am ~wyyltxl `mmg madtgtag- aby`txanlm`tg pwgmmg taew`th`bxa a xftg`h sa~xl nfg a yxftg`h blb f`bbl wb nltta~ygxxasluabhlu~ & blb lygb ~lwtng pw`bxlkgbl5

@"0"4 Kwmxaxftg`habe

Am ~wyyltxl `a xftg`h hgmm` ~xm w~` m` madtgta` yxftg`h  ygt ntg`tg g eg~xatg a xftg`h- ygt`xxas`tm` na ~a ~gtsg hgm ffl`e +myxftg`h gh ig bgng~~`tal nfg enn abnmwh` enn+kwmxamad&ha~ylbadamg nlkg y`nnfgxxl ab klmxg ha~xtadwzalba ha mabwv

~g blb cwbzalb` g ab y`txanlm`tg ~g h` gttlta hgm xayl ‑c`x`m gttlt: `~k,gttbl"f‑

da~leb` `yyman`tg wb` y`xnf `mm` madtgta`

`bh`xg ~w ,w~t,abnmwhg,  g nlbxtlmm`xg nfg g~a~x` m` n`txgmm` `~k+egbgtan- ~g g~a~xgc`xgbg wb mabo ~lcxu`tg ~w ,w~t,abnmwhg,`~k  &BLB tablkab`xgm`- blb ~a ~` k`a nfg ywil~wnnghgtg nlb wb `eealtb`kgbxl ha y`nnfgxxa " Pwg~xl hlstgddg ta~lmsgtg am ytldmgk`-g yl~~adamkgbxg kgbxtg ~xl ~ntasgbhl blb ig yaiw wb` nl~` bgng~~`ta`"

@"4 Kantl~lcx Sa~w m ^xwhal

Clbxa dgbg abcltk`xg6 ka hanlbl nfg am ~wyyltxl ` Nyy9V ig nlkymgxl ab Sa~w`m ^xwhal4909

3 fxxy:,,uuu"kabeu"lte,5 fxxy:,,uuu"jw~x~lcxu`tg~lmwxalb~"nl"wo,6fxxy:,,uuu"tlkglvdk"xo,ax, Ct`bng~nl Ew`~xgmm`- wb kal nlmmge` ab hasgt~g nl~g wbasgt~ax tag g

blb

>0

Page 32: Multithreading e programmazione funzionale in Cpp0X -C++11

5/16/2018 Multithreading e programmazione funzionale in Cpp0X -C++11 - slidepdf.com

http://slidepdf.com/reader/full/multithreading-e-programmazione-funzionale-in-cpp0x-c11

Tacgtakgbxa dadmalet`ffna

_0[ fxxy:,,uuu"xfgh`t~f`b"nlk,abcltk`xan`,4900,94,am+n+blb+g+`bnlt`+kltxl, 

_4[ fxxy:,,uuu"xfgh`t~f`b"nlk,abcltk`xan`,4900,9>,am+ny+g+mg+m`kdh`+n9v, 

_>[ fxxy:,,uuu"xfgh`t~f`b"nlk,abcltk`xan`,4900,09,am+n+g+am+kwmxaxftg habe+n9v, 

_8[ fxxy:,,uuu"xfgh`t~f b"nlk,abcltk`xan`,4900,09,~abntlbazz`zalbg+hga+xftg h+g+eg~xalbg+hgmmg+ta~lt~g+nlb+a+kwxgv+n9v, 

_7[ fxxy:,,uuu"xfgh`t~f`b"nlk,abcltk`xan`,4900,00,w~l+`s`bz`xl+hga+kwxgv+a+7+ ffml~lff+n9v, 

_3[ fxxy:,,uuu"xfgh`t~f b"nlk,abcltk`xan`,4900,00,mg+nlbhaxalb+akymgkgbx`zalbg+hgmmg+nlhg+ha+`xxg~`+am+ytldmgk`+hgm+d tdagtg+`hhltkgbx`xl+n9v, 

>4