()
| 304 | |
| 305 | #[no_mangle] |
| 306 | pub fn main() { |
| 307 | println!("stackful_coroutine begin..."); |
| 308 | println!("TASK 0(Runtime) STARTING"); |
| 309 | let mut runtime = Runtime::new(); |
| 310 | runtime.init(); |
| 311 | runtime.spawn(|| { |
| 312 | println!("TASK 1 STARTING"); |
| 313 | let id = 1; |
| 314 | for i in 0..4 { |
| 315 | println!("task: {} counter: {}", id, i); |
| 316 | yield_task(); |
| 317 | } |
| 318 | println!("TASK 1 FINISHED"); |
| 319 | }); |
| 320 | runtime.spawn(|| { |
| 321 | println!("TASK 2 STARTING"); |
| 322 | let id = 2; |
| 323 | for i in 0..8 { |
| 324 | println!("task: {} counter: {}", id, i); |
| 325 | yield_task(); |
| 326 | } |
| 327 | println!("TASK 2 FINISHED"); |
| 328 | }); |
| 329 | runtime.spawn(|| { |
| 330 | println!("TASK 3 STARTING"); |
| 331 | let id = 3; |
| 332 | for i in 0..12 { |
| 333 | println!("task: {} counter: {}", id, i); |
| 334 | yield_task(); |
| 335 | } |
| 336 | println!("TASK 3 FINISHED"); |
| 337 | }); |
| 338 | runtime.spawn(|| { |
| 339 | println!("TASK 4 STARTING"); |
| 340 | let id = 4; |
| 341 | for i in 0..16 { |
| 342 | println!("task: {} counter: {}", id, i); |
| 343 | yield_task(); |
| 344 | } |
| 345 | println!("TASK 4 FINISHED"); |
| 346 | }); |
| 347 | runtime.run(); |
| 348 | println!("stackful_coroutine PASSED"); |
| 349 | exit(0); |
| 350 | } |
nothing calls this directly
no test coverage detected