@@ -50,7 +50,7 @@ concurrency at this writing:
5050* [ ` std::pipes ` ] - The underlying messaging infrastructure,
5151* [ ` extra::comm ` ] - Additional messaging types based on ` std::pipes ` ,
5252* [ ` extra::sync ` ] - More exotic synchronization tools, including locks,
53- * [ ` extra::arc ` ] - The ARC (atomically reference counted) type,
53+ * [ ` extra::arc ` ] - The Arc (atomically reference counted) type,
5454 for safely sharing immutable data,
5555* [ ` extra::future ` ] - A type representing values that may be computed concurrently and retrieved at a later time.
5656
@@ -334,24 +334,24 @@ fn main() {
334334}
335335~~~
336336
337- ## Sharing immutable data without copy: ARC
337+ ## Sharing immutable data without copy: Arc
338338
339339To share immutable data between tasks, a first approach would be to only use pipes as we have seen
340340previously. A copy of the data to share would then be made for each task. In some cases, this would
341341add up to a significant amount of wasted memory and would require copying the same data more than
342342necessary.
343343
344- To tackle this issue, one can use an Atomically Reference Counted wrapper (` ARC ` ) as implemented in
345- the ` extra ` library of Rust. With an ARC , the data will no longer be copied for each task. The ARC
344+ To tackle this issue, one can use an Atomically Reference Counted wrapper (` Arc ` ) as implemented in
345+ the ` extra ` library of Rust. With an Arc , the data will no longer be copied for each task. The Arc
346346acts as a reference to the shared data and only this reference is shared and cloned.
347347
348- Here is a small example showing how to use ARCs . We wish to run concurrently several computations on
348+ Here is a small example showing how to use Arcs . We wish to run concurrently several computations on
349349a single large vector of floats. Each task needs the full vector to perform its duty.
350350~~~
351351# use std::vec;
352352# use std::uint;
353353# use std::rand;
354- use extra::arc::ARC ;
354+ use extra::arc::Arc ;
355355
356356fn pnorm(nums: &~[float], p: uint) -> float {
357357 nums.iter().fold(0.0, |a,b| a+(*b).pow(&(p as float)) ).pow(&(1f / (p as float)))
@@ -361,14 +361,14 @@ fn main() {
361361 let numbers = vec::from_fn(1000000, |_| rand::random::<float>());
362362 println(fmt!("Inf-norm = %?", *numbers.iter().max().unwrap()));
363363
364- let numbers_arc = ARC (numbers);
364+ let numbers_arc = Arc::new (numbers);
365365
366366 for uint::range(1,10) |num| {
367367 let (port, chan) = stream();
368368 chan.send(numbers_arc.clone());
369369
370370 do spawn {
371- let local_arc : ARC <~[float]> = port.recv();
371+ let local_arc : Arc <~[float]> = port.recv();
372372 let task_numbers = local_arc.get();
373373 println(fmt!("%u-norm = %?", num, pnorm(task_numbers, num)));
374374 }
@@ -377,42 +377,42 @@ fn main() {
377377~~~
378378
379379The function ` pnorm ` performs a simple computation on the vector (it computes the sum of its items
380- at the power given as argument and takes the inverse power of this value). The ARC on the vector is
380+ at the power given as argument and takes the inverse power of this value). The Arc on the vector is
381381created by the line
382382~~~
383- # use extra::arc::ARC ;
383+ # use extra::arc::Arc ;
384384# use std::vec;
385385# use std::rand;
386386# let numbers = vec::from_fn(1000000, |_| rand::random::<float>());
387- let numbers_arc=ARC (numbers);
387+ let numbers_arc=Arc::new (numbers);
388388~~~
389389and a clone of it is sent to each task
390390~~~
391- # use extra::arc::ARC ;
391+ # use extra::arc::Arc ;
392392# use std::vec;
393393# use std::rand;
394394# let numbers=vec::from_fn(1000000, |_| rand::random::<float>());
395- # let numbers_arc = ARC (numbers);
395+ # let numbers_arc = Arc::new (numbers);
396396# let (port, chan) = stream();
397397chan.send(numbers_arc.clone());
398398~~~
399399copying only the wrapper and not its contents.
400400
401401Each task recovers the underlying data by
402402~~~
403- # use extra::arc::ARC ;
403+ # use extra::arc::Arc ;
404404# use std::vec;
405405# use std::rand;
406406# let numbers=vec::from_fn(1000000, |_| rand::random::<float>());
407- # let numbers_arc=ARC (numbers);
407+ # let numbers_arc=Arc::new (numbers);
408408# let (port, chan) = stream();
409409# chan.send(numbers_arc.clone());
410- # let local_arc : ARC <~[float]> = port.recv();
410+ # let local_arc : Arc <~[float]> = port.recv();
411411let task_numbers = local_arc.get();
412412~~~
413413and can use it as if it were local.
414414
415- The ` arc ` module also implements ARCs around mutable data that are not covered here.
415+ The ` arc ` module also implements Arcs around mutable data that are not covered here.
416416
417417# Handling task failure
418418
0 commit comments