<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html lang="en-us" xml:lang="en-us"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="security" content="public" /> <meta name="Robots" content="index,follow" /> <meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' /> <meta name="DC.Type" content="reference" /> <meta name="DC.Title" content="Contention among threads" /> <meta name="abstract" content="Contention occurs when one thread has to wait for another thread to finish using a resource." /> <meta name="description" content="Contention occurs when one thread has to wait for another thread to finish using a resource." /> <meta name="DC.Relation" scheme="URI" content="rzahwpcoco.htm" /> <meta name="copyright" content="(C) Copyright IBM Corporation 1998, 2006" /> <meta name="DC.Rights.Owner" content="(C) Copyright IBM Corporation 1998, 2006" /> <meta name="DC.Format" content="XHTML" /> <meta name="DC.Identifier" content="rzahwcon-conco" /> <meta name="DC.Language" content="en-us" /> <!-- All rights reserved. Licensed Materials Property of IBM --> <!-- US Government Users Restricted Rights --> <!-- Use, duplication or disclosure restricted by --> <!-- GSA ADP Schedule Contract with IBM Corp. --> <link rel="stylesheet" type="text/css" href="./ibmdita.css" /> <link rel="stylesheet" type="text/css" href="./ic.css" /> <title>Contention among threads</title> </head> <body id="rzahwcon-conco"><a name="rzahwcon-conco"><!-- --></a> <!-- Java sync-link --><script language="Javascript" src="../rzahg/synch.js" type="text/javascript"></script> <h1 class="topictitle1">Contention among threads</h1> <div><p>Contention occurs when one thread has to wait for another thread to finish using a resource.</p> <div class="section"><p>Contention problems can occur if your application uses too few mutual exclusions (mutexes) to protect access to a large number of resources. A large number of threads that share a small number of resources can also cause contention between threads in your application.</p> </div> <div class="section"><p>Contention between threads over resources can cause context switches and paging. To reduce contention within your application, you should hold locks for the shortest amount of time and try to prevent a single lock from being used for two different or unrelated shared resources. </p> </div> <div class="section"><p>Threads that poll or spin to wait for resources prevent scaling. This form of contention can drastically affect the performance of your application. Polling or spinning can also adversely affect other threads or jobs, degrading system performance. Use condition variables, semaphores, mutexes, or other synchronization primitives so that threads never need to poll or spin to wait for resources to become available.</p> </div> </div> <div> <div class="familylinks"> <div class="parentlink"><strong>Parent topic:</strong> <a href="rzahwpcoco.htm" title="There are several performance considerations for multithreaded jobs on i5/OS.">Performance considerations in multithreaded applications</a></div> </div> </div> </body> </html>