https://gcc.gnu.org/bugzilla/show_bug.cgi?id=25829
Nicolas Koenig <koenigni at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Attachment #42494|0 |1 is obsolete| | --- Comment #34 from Nicolas Koenig <koenigni at gcc dot gnu.org> --- Created attachment 43877 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=43877&action=edit Proof of concept for transfer of a single integer Here is a proof of concept patch which transfers a single integer: $ cat foo.f90 program main integer :: i i = 42 open(10,asynchronous="yes") write (10, *, asynchronous="yes") i close (10) end program main $ gfortran foo.f90 -lpthread $ ./a.out M: LOCK: lock prev: unlocked change_pdt():336 M: ACQ: lock M: UNLOCK: lock change_pdt():345 M: SIGNAL: &au->work change_pdt():346 T: LOCK: lock prev: unlocked async_io():164 T: ACQ: lock T: UNLOCK: lock async_io():166 T: WAITING: &au->work async_io():169 M: LOCK: lock prev: unlocked enqueue_transfer():278 M: ACQ: lock M: UNLOCK: lock enqueue_transfer():287 M: SIGNAL: &au->work enqueue_transfer():288 T: LOCK: lock prev: unlocked async_io():170 T: ACQ: lock T: UNLOCK: lock async_io():175 T: NOTE: Changing pdts update_pdt():134 T: LOCK: lock prev: unlocked async_io():200 T: ACQ: lock T: UNLOCK: lock async_io():175 T: NOTE: Starting transfer async_io():189 M: LOCK: lock prev: unlocked enqueue_done():297 M: ACQ: lock M: UNLOCK: lock enqueue_done():306 M: SIGNAL: &au->work enqueue_done():307 T: LOCK: lock prev: locked async_io():200 T: ACQ: lock T: UNLOCK: lock async_io():175 T: NOTE: Finalizing write async_io():182 T: LOCK: lock prev: unlocked async_io():200 T: ACQ: lock T: SIGNAL: &au->emptysignal async_io():215 T: UNLOCK: lock async_io():219 T: WAITING: &au->work async_io():169 T: LOCK: lock prev: unlocked async_io():170 T: ACQ: lock T: SIGNAL: &au->emptysignal async_io():215 T: UNLOCK: lock async_io():219 T: WAITING: &au->work async_io():169 M: LOCK: lock prev: locked async_close():388 M: ACQ: lock M: UNLOCK: lock async_close():390 M: SIGNAL: &(au->work) async_wait():375 M: LOCK: lock prev: unlocked async_wait():376 M: ACQ: lock M: UNLOCK: lock async_wait():378 T: REC: &au->work async_io():169 T: LOCK: lock prev: unlocked async_io():170 T: ACQ: lock T: SIGNAL: &au->emptysignal async_io():215 T: UNLOCK: lock async_io():221 $ cat fort.10 42