@@ -268,17 +268,17 @@ fn panic_propagate_still_execute_4() {
268
268
}
269
269
270
270
macro_rules! test_order {
271
- ( $scope: ident) => { {
271
+ ( $scope: ident => $spawn : ident ) => { {
272
272
let builder = ThreadPoolBuilder :: new( ) . num_threads( 1 ) ;
273
273
let pool = builder. build( ) . unwrap( ) ;
274
274
pool. install( || {
275
275
let vec = Mutex :: new( vec![ ] ) ;
276
276
$scope( |scope| {
277
277
let vec = & vec;
278
278
for i in 0 ..10 {
279
- scope. spawn( move |scope| {
279
+ scope. $ spawn( move |scope| {
280
280
for j in 0 ..10 {
281
- scope. spawn( move |_| {
281
+ scope. $ spawn( move |_| {
282
282
vec. lock( ) . unwrap( ) . push( i * 10 + j) ;
283
283
} ) ;
284
284
}
@@ -293,32 +293,33 @@ macro_rules! test_order {
293
293
#[ test]
294
294
fn lifo_order ( ) {
295
295
// In the absense of stealing, `scope()` runs its `spawn()` jobs in LIFO order.
296
- let vec = test_order ! ( scope) ;
296
+ let vec = test_order ! ( scope => spawn ) ;
297
297
let expected: Vec < i32 > = ( 0 ..100 ) . rev ( ) . collect ( ) ; // LIFO -> reversed
298
298
assert_eq ! ( vec, expected) ;
299
299
}
300
300
301
301
#[ test]
302
302
fn fifo_order ( ) {
303
- // In the absense of stealing, `scope_fifo()` runs its `spawn ()` jobs in FIFO order.
304
- let vec = test_order ! ( scope_fifo) ;
303
+ // In the absense of stealing, `scope_fifo()` runs its `spawn_fifo ()` jobs in FIFO order.
304
+ let vec = test_order ! ( scope_fifo => spawn_fifo ) ;
305
305
let expected: Vec < i32 > = ( 0 ..100 ) . collect ( ) ; // FIFO -> natural order
306
306
assert_eq ! ( vec, expected) ;
307
307
}
308
308
309
309
macro_rules! test_nested_order {
310
- ( $outer_scope: ident, $inner_scope: ident) => { {
310
+ ( $outer_scope: ident => $outer_spawn: ident,
311
+ $inner_scope: ident => $inner_spawn: ident) => { {
311
312
let builder = ThreadPoolBuilder :: new( ) . num_threads( 1 ) ;
312
313
let pool = builder. build( ) . unwrap( ) ;
313
314
pool. install( || {
314
315
let vec = Mutex :: new( vec![ ] ) ;
315
316
$outer_scope( |scope| {
316
317
let vec = & vec;
317
318
for i in 0 ..10 {
318
- scope. spawn ( move |_| {
319
+ scope. $outer_spawn ( move |_| {
319
320
$inner_scope( |scope| {
320
321
for j in 0 ..10 {
321
- scope. spawn ( move |_| {
322
+ scope. $inner_spawn ( move |_| {
322
323
vec. lock( ) . unwrap( ) . push( i * 10 + j) ;
323
324
} ) ;
324
325
}
@@ -334,23 +335,23 @@ macro_rules! test_nested_order {
334
335
#[ test]
335
336
fn nested_lifo_order ( ) {
336
337
// In the absense of stealing, `scope()` runs its `spawn()` jobs in LIFO order.
337
- let vec = test_nested_order ! ( scope, scope) ;
338
+ let vec = test_nested_order ! ( scope => spawn , scope => spawn ) ;
338
339
let expected: Vec < i32 > = ( 0 ..100 ) . rev ( ) . collect ( ) ; // LIFO -> reversed
339
340
assert_eq ! ( vec, expected) ;
340
341
}
341
342
342
343
#[ test]
343
344
fn nested_fifo_order ( ) {
344
- // In the absense of stealing, `scope_fifo()` runs its `spawn ()` jobs in FIFO order.
345
- let vec = test_nested_order ! ( scope_fifo, scope_fifo) ;
345
+ // In the absense of stealing, `scope_fifo()` runs its `spawn_fifo ()` jobs in FIFO order.
346
+ let vec = test_nested_order ! ( scope_fifo => spawn_fifo , scope_fifo => spawn_fifo ) ;
346
347
let expected: Vec < i32 > = ( 0 ..100 ) . collect ( ) ; // FIFO -> natural order
347
348
assert_eq ! ( vec, expected) ;
348
349
}
349
350
350
351
#[ test]
351
352
fn nested_lifo_fifo_order ( ) {
352
353
// LIFO on the outside, FIFO on the inside
353
- let vec = test_nested_order ! ( scope, scope_fifo) ;
354
+ let vec = test_nested_order ! ( scope => spawn , scope_fifo => spawn_fifo ) ;
354
355
let expected: Vec < i32 > = ( 0 ..10 )
355
356
. rev ( )
356
357
. flat_map ( |i| ( 0 ..10 ) . map ( move |j| i * 10 + j) )
@@ -361,38 +362,39 @@ fn nested_lifo_fifo_order() {
361
362
#[ test]
362
363
fn nested_fifo_lifo_order ( ) {
363
364
// FIFO on the outside, LIFO on the inside
364
- let vec = test_nested_order ! ( scope_fifo, scope) ;
365
+ let vec = test_nested_order ! ( scope_fifo => spawn_fifo , scope => spawn ) ;
365
366
let expected: Vec < i32 > = ( 0 ..10 )
366
367
. flat_map ( |i| ( 0 ..10 ) . rev ( ) . map ( move |j| i * 10 + j) )
367
368
. collect ( ) ;
368
369
assert_eq ! ( vec, expected) ;
369
370
}
370
371
371
372
macro_rules! spawn_push {
372
- ( $scope: ident, $vec: ident, $i: expr) => { {
373
- $scope. spawn( move |_| $vec. lock( ) . unwrap( ) . push( $i) ) ;
373
+ ( $scope: ident . $spawn : ident , $vec: ident, $i: expr) => { {
374
+ $scope. $ spawn( move |_| $vec. lock( ) . unwrap( ) . push( $i) ) ;
374
375
} } ;
375
376
}
376
377
377
378
/// Test spawns pushing a series of numbers, interleaved
378
379
/// such that negative values are using an inner scope.
379
380
macro_rules! test_mixed_order {
380
- ( $outer_scope: ident, $inner_scope: ident) => { {
381
+ ( $outer_scope: ident => $outer_spawn: ident,
382
+ $inner_scope: ident => $inner_spawn: ident) => { {
381
383
let builder = ThreadPoolBuilder :: new( ) . num_threads( 1 ) ;
382
384
let pool = builder. build( ) . unwrap( ) ;
383
385
pool. install( || {
384
386
let vec = Mutex :: new( vec![ ] ) ;
385
387
$outer_scope( |outer_scope| {
386
388
let vec = & vec;
387
- spawn_push!( outer_scope, vec, 0 ) ;
389
+ spawn_push!( outer_scope. $outer_spawn , vec, 0 ) ;
388
390
$inner_scope( |inner_scope| {
389
- spawn_push!( inner_scope, vec, -1 ) ;
390
- spawn_push!( outer_scope, vec, 1 ) ;
391
- spawn_push!( inner_scope, vec, -2 ) ;
392
- spawn_push!( outer_scope, vec, 2 ) ;
393
- spawn_push!( inner_scope, vec, -3 ) ;
391
+ spawn_push!( inner_scope. $inner_spawn , vec, -1 ) ;
392
+ spawn_push!( outer_scope. $outer_spawn , vec, 1 ) ;
393
+ spawn_push!( inner_scope. $inner_spawn , vec, -2 ) ;
394
+ spawn_push!( outer_scope. $outer_spawn , vec, 2 ) ;
395
+ spawn_push!( inner_scope. $inner_spawn , vec, -3 ) ;
394
396
} ) ;
395
- spawn_push!( outer_scope, vec, 3 ) ;
397
+ spawn_push!( outer_scope. $outer_spawn , vec, 3 ) ;
396
398
} ) ;
397
399
vec. into_inner( ) . unwrap( )
398
400
} )
@@ -403,14 +405,14 @@ macro_rules! test_mixed_order {
403
405
fn mixed_lifo_order ( ) {
404
406
// NB: the end of the inner scope makes us execute some of the outer scope
405
407
// before they've all been spawned, so they're not perfectly LIFO.
406
- let vec = test_mixed_order ! ( scope, scope) ;
408
+ let vec = test_mixed_order ! ( scope => spawn , scope => spawn ) ;
407
409
let expected = vec ! [ -3 , 2 , -2 , 1 , -1 , 3 , 0 ] ;
408
410
assert_eq ! ( vec, expected) ;
409
411
}
410
412
411
413
#[ test]
412
414
fn mixed_fifo_order ( ) {
413
- let vec = test_mixed_order ! ( scope_fifo, scope_fifo) ;
415
+ let vec = test_mixed_order ! ( scope_fifo => spawn_fifo , scope_fifo => spawn_fifo ) ;
414
416
let expected = vec ! [ -1 , 0 , -2 , 1 , -3 , 2 , 3 ] ;
415
417
assert_eq ! ( vec, expected) ;
416
418
}
@@ -419,14 +421,14 @@ fn mixed_fifo_order() {
419
421
fn mixed_lifo_fifo_order ( ) {
420
422
// NB: the end of the inner scope makes us execute some of the outer scope
421
423
// before they've all been spawned, so they're not perfectly LIFO.
422
- let vec = test_mixed_order ! ( scope, scope_fifo) ;
424
+ let vec = test_mixed_order ! ( scope => spawn , scope_fifo => spawn_fifo ) ;
423
425
let expected = vec ! [ -1 , 2 , -2 , 1 , -3 , 3 , 0 ] ;
424
426
assert_eq ! ( vec, expected) ;
425
427
}
426
428
427
429
#[ test]
428
430
fn mixed_fifo_lifo_order ( ) {
429
- let vec = test_mixed_order ! ( scope_fifo, scope) ;
431
+ let vec = test_mixed_order ! ( scope_fifo => spawn_fifo , scope => spawn ) ;
430
432
let expected = vec ! [ -3 , 0 , -2 , 1 , -1 , 2 , 3 ] ;
431
433
assert_eq ! ( vec, expected) ;
432
434
}
0 commit comments