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

Reply via email to