Ignore:
Timestamp:
Jun 30, 2018, 3:56:46 PM (6 years ago)
Author:
Peter A. Buhr <pabuhr@…>
Branches:
ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, no_list, persistent-indexer, pthread-emulation, qualifiedEnum
Children:
73de175
Parents:
adb60242
Message:

more updates

Location:
doc/papers/concurrency
Files:
3 deleted
1 edited

Legend:

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

    radb60242 r2ebcb28  
    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, 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;
     2173the total time is divided by @N@ to obtain the average time for a benchmark.
    21732174All omitted tests for other languages are functionally identical to the shown \CFA test.
    21742175
     
    23152316}
    23162317\end{cfa}
    2317 \captionof{figure}{\CFA Internal scheduling benchmark}
     2318\captionof{figure}{\CFA Internal-scheduling benchmark}
    23182319\label{f:int-sched}
    23192320
    23202321\centering
    2321 \captionof{table}{Internal scheduling comparison (nanoseconds)}
     2322\captionof{table}{Internal-scheduling comparison (nanoseconds)}
    23222323\label{tab:int-sched}
    23232324\bigskip
     
    23662367}
    23672368\end{cfa}
    2368 \captionof{figure}{\CFA external scheduling benchmark}
     2369\captionof{figure}{\CFA external-scheduling benchmark}
    23692370\label{f:ext-sched}
    23702371
    23712372\centering
    23722373
    2373 \captionof{table}{External scheduling comparison (nanoseconds)}
     2374\captionof{table}{External-scheduling comparison (nanoseconds)}
    23742375\label{tab:ext-sched}
    23752376\bigskip
     
    23972398}
    23982399\end{cfa}
    2399 \captionof{figure}{\CFA object creation benchmark}
     2400\captionof{figure}{\CFA object-creation benchmark}
    24002401\label{f:creation}
    24012402
Note: See TracChangeset for help on using the changeset viewer.