Changeset 2ebcb28
- Timestamp:
- Jun 30, 2018, 3:56:46 PM (6 years ago)
- 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
- Location:
- doc/papers/concurrency
- Files:
-
- 3 deleted
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
doc/papers/concurrency/Paper.tex
radb60242 r2ebcb28 1309 1309 void print( Tree & mutex tree ) { $\C{// prefix traversal}$ 1310 1310 // 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 ); 1313 1313 } 1314 1314 \end{cfa} … … 2089 2089 In \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. 2090 2090 When 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.2091 This array persists for the entire duration of the mutual exclusion and is used extensively for synchronization operations. 2092 2092 2093 2093 To 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; … … 2170 2170 \end{cfa} 2171 2171 The 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. 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. 2173 2174 All omitted tests for other languages are functionally identical to the shown \CFA test. 2174 2175 … … 2315 2316 } 2316 2317 \end{cfa} 2317 \captionof{figure}{\CFA Internal 2318 \captionof{figure}{\CFA Internal-scheduling benchmark} 2318 2319 \label{f:int-sched} 2319 2320 2320 2321 \centering 2321 \captionof{table}{Internal 2322 \captionof{table}{Internal-scheduling comparison (nanoseconds)} 2322 2323 \label{tab:int-sched} 2323 2324 \bigskip … … 2366 2367 } 2367 2368 \end{cfa} 2368 \captionof{figure}{\CFA external 2369 \captionof{figure}{\CFA external-scheduling benchmark} 2369 2370 \label{f:ext-sched} 2370 2371 2371 2372 \centering 2372 2373 2373 \captionof{table}{External 2374 \captionof{table}{External-scheduling comparison (nanoseconds)} 2374 2375 \label{tab:ext-sched} 2375 2376 \bigskip … … 2397 2398 } 2398 2399 \end{cfa} 2399 \captionof{figure}{\CFA object 2400 \captionof{figure}{\CFA object-creation benchmark} 2400 2401 \label{f:creation} 2401 2402
Note: See TracChangeset
for help on using the changeset viewer.