Content deleted Content added
Denisarona (talk | contribs) Undid revision 1248207201 by 2402:800:61AF:9409:AB85:AE1D:48BA:2E19 (talk) |
m Reverted edit by 35.33.193.94 (talk) to last version by Frap |
||
(4 intermediate revisions by 3 users not shown) | |||
Line 24:
{{main|resource contention}}
In computer science, [https://www.techtarget.com/whatis/definition/resource-contention resource contention] refers to a conflict that arises when multiple entities attempt to access a shared resource, like random access memory, disk storage, cache memory, internal buses, or external network devices.
==Memory management==
Line 36:
==Basic techniques==
The basic approach to resource management is to acquire a resource, do something with it, then release it, yielding code of the form (illustrated with opening a file in [[Python (programming language)|Python]]):
<syntaxhighlight lang="python">
f = open(filename)
Line 69:
</syntaxhighlight>
The above techniques – unwind protection (<code>finally</code>) and some form of encapsulation – are the most common approach to resource management, found in various forms in [[C Sharp (programming language)|C#]], [[Common Lisp]], [[Java (programming language)|Java]], [[Python (programming language)|Python]], [[Ruby (programming language)|Ruby]], [[Scheme (programming language)|Scheme]], and [[Smalltalk]],{{sfn|Beck|1997|pp=37–39}} among others; they date to the late 1970s in the [[NIL (programming language)|NIL]] dialect of Lisp; see {{section link|Exception handling|History}}. There are many variations in the implementation, and there are also significantly different [[#Approaches|approaches]].
== Approaches ==
|