Changes in / [73de175:35a9e41]


Ignore:
Location:
doc/papers/concurrency
Files:
3 added
1 edited

Legend:

Unmodified
Added
Removed
  • doc/papers/concurrency/Paper.tex

    r73de175 r35a9e41  
    13091309void print( Tree & mutex tree ) {                       $\C{// prefix traversal}$
    13101310        // write value
    1311         print( *tree->left );                                   $\C{// multiply acquire monitor lock for tree on each recursion}$
    1312         print( *tree->right );
     1311        print( tree->left );                                    $\C{// multiply acquire monitor lock for tree on each recursion}$
     1312        print( tree->right );
    13131313}
    13141314\end{cfa}
     
    20892089In \CFA, ordering of monitor acquisition relies on memory ordering to prevent deadlock~\cite{Havender68}, because all objects have distinct non-overlapping memory layouts, and mutual-exclusion for a monitor is only defined for its lifetime.
    20902090When a mutex call is made, pointers to the concerned monitors are aggregated into a variable-length array and sorted.
    2091 This array persists for the entire duration of the mutual exclusion and is used extensively for synchronization operations.
     2091This array persists for the entire duration of the mutual-exclusion and is used extensively for synchronization operations.
    20922092
    20932093To improve performance and simplicity, context switching occurs inside a routine call, so only callee-saved registers are copied onto the stack and then the stack register is switched;
     
    21702170\end{cfa}
    21712171The method used to get time is @clock_gettime( CLOCK_REALTIME )@.
    2172 Each benchmark is performed @N@ times, where @N@ varies depending on the benchmark;
    2173 the total time is divided by @N@ to obtain the average time for a benchmark.
     2172Each benchmark is performed @N@ times, where @N@ varies depending on the benchmark, the total time is divided by @N@ to obtain the average time for a benchmark.
    21742173All omitted tests for other languages are functionally identical to the shown \CFA test.
    21752174
     
    23162315}
    23172316\end{cfa}
    2318 \captionof{figure}{\CFA Internal-scheduling benchmark}
     2317\captionof{figure}{\CFA Internal scheduling benchmark}
    23192318\label{f:int-sched}
    23202319
    23212320\centering
    2322 \captionof{table}{Internal-scheduling comparison (nanoseconds)}
     2321\captionof{table}{Internal scheduling comparison (nanoseconds)}
    23232322\label{tab:int-sched}
    23242323\bigskip
     
    23672366}
    23682367\end{cfa}
    2369 \captionof{figure}{\CFA external-scheduling benchmark}
     2368\captionof{figure}{\CFA external scheduling benchmark}
    23702369\label{f:ext-sched}
    23712370
    23722371\centering
    23732372
    2374 \captionof{table}{External-scheduling comparison (nanoseconds)}
     2373\captionof{table}{External scheduling comparison (nanoseconds)}
    23752374\label{tab:ext-sched}
    23762375\bigskip
     
    23982397}
    23992398\end{cfa}
    2400 \captionof{figure}{\CFA object-creation benchmark}
     2399\captionof{figure}{\CFA object creation benchmark}
    24012400\label{f:creation}
    24022401
Note: See TracChangeset for help on using the changeset viewer.