@@ -392,28 +392,6 @@ print("callActorFromStartSynchronousTask() - actor in custom executor with its o
392
392
let actorQueue = DispatchQueue ( label: " recipient-actor-queue " )
393
393
callActorFromStartSynchronousTask ( recipient: . recipientOnQueue( RecipientOnQueue ( queue: actorQueue) ) )
394
394
395
-
396
- // 50: callActorFromStartSynchronousTask()
397
- // 51: before immediate [thread:0x00007000054f5000] @ :366
398
- // 52: inside immediate [thread:0x00007000054f5000] @ :372
399
- // 53: inside immediate, call rec.sync() [thread:0x00007000054f5000] @ :380
400
- // 54: Recipient/sync(syncTaskThreadID:) Current actor thread id = 0x000070000567e000 @ :336
401
- // 55: inside immediate, call rec.sync() done [thread:0x000070000567e000] @ :385
402
- // 56: Inner thread id = 0x00007000054f5000
403
- // 57: Current thread id = 0x000070000567e000
404
- // 60: after immediate [thread:0x00007000054f5000] @ :418
405
- // 61: - async work on queue
406
- // 62: - async work on queue
407
- // 63: - async work on queue
408
- // 64: - async work on queue
409
- // 65: - async work on queue
410
- // 67: - async work on queue
411
- // 68: - async work on queue
412
- // 69: - async work on queue
413
- // 71: Inner thread id = 0x00007000054f5000
414
- // 72: Current thread id = 0x000070000567e000
415
- // 73: inside immediate, done [thread:0x000070000567e000] @ :414
416
-
417
395
// CHECK-LABEL: callActorFromStartSynchronousTask() - actor in custom executor with its own queue
418
396
// No interleaving allowed between "before" and "inside":
419
397
// CHECK: before immediate [thread:[[CALLING_THREAD4:.*]]]
@@ -452,3 +430,36 @@ actor RecipientOnQueue: RecipientProtocol {
452
430
try ? await Task . sleep ( for: . milliseconds( 100 ) )
453
431
}
454
432
}
433
+
434
+ print ( " \n \n ==== ------------------------------------------------------------------ " )
435
+ print ( " call_startSynchronously_insideActor() " )
436
+
437
+ actor A {
438
+ func f( ) {
439
+ Task . startSynchronously ( ) {
440
+ print ( " Task.startSynchronously " )
441
+ }
442
+ }
443
+
444
+ func f2( ) {
445
+ Task . immediate ( ) {
446
+ print ( " Task.immediate " )
447
+ }
448
+
449
+ Task . immediate ( ) { @MainActor in
450
+ print ( " Task.immediate { @MainActor } " )
451
+ }
452
+ }
453
+ }
454
+
455
+ func call_startSynchronously_insideActor( ) async {
456
+ await A ( ) . f ( )
457
+ await A ( ) . f2 ( )
458
+ }
459
+
460
+ await call_startSynchronously_insideActor ( )
461
+
462
+ // CHECK-LABEL: call_startSynchronously_insideActor()
463
+ // Those two definitely in this order, however the startSynchronously is not determinate
464
+ // CHECK: Task.immediate
465
+ // CHECK: Task.immediate { @MainActor }
0 commit comments