C# : Keyword
Top 37 C# Example Pages...

["sewsthddrs.t. XCsCST~~}T~~YFG76FXBBCBXBCCEEP_CCCC/S}T~~}T~~","Lock,"," a keyword, is used in threading. It restricts code from being executed by more than one thread at the same time. This makes threaded programs reliable. The lock statement uses a special syntax form to restrict concurrent access. ","Note: ","Lock is compiled into a lower-level implementation based on threading primitives.","Example."," Here we see a static method \"A\" that uses the lock statement on an object. When the method A is called many times on new threads, each invocation of the method accesses the threading primitives implemented by the lock. ","Then: ","Only one method A can call the statements protected by the lock at a single time, regardless of the thread count.","ins","class","adsbygoogle","data-ad-client","ca-pub-4712093147740724","data-ad-slot","6227126509","data-ad-format","auto","ins","class","adsbygoogle","data-ad-client","ca-pub-4712093147740724","data-ad-slot","6227126509","data-ad-format","auto","Based on:"," .NET 4.5\n\n","C# program that uses lock statement","\n\nusing System;\nusing System.Threading;\n\nclass Program\n{\n static readonly object _object = new object();\n\n static void A()\n {","\n // Lock on the readonly object.\n // ... Inside the lock, sleep for 100 milliseconds.\n // ... This is thread serialization.\n ","lock"," (_object)\n {\n Thread.Sleep(100);\n Console.WriteLine(Environment.TickCount);\n }\n }\n\n static void Main()\n {","\n // Create ten new threads.\n ","for (int i = 0; i < 10; i++)\n {\n ThreadStart start = new ThreadStart(A);\n new Thread(start).Start();\n }\n }\n}\n\n","Possible output of the program","\n\n28106840\n28106949\n28107043\n28107136\n28107246\n28107339\n28107448\n28107542\n28107636\n28107745","In this example,"," the Main method creates ten new threads, and then calls Start on each one. The method A is invoked ten times, but the tick count shows the protected method region is executed sequentially\u2014about 100 milliseconds apart. ","ThreadStart ","threadstart","Sleep ","sleep","Note: ","If you remove the lock statement, the methods will be executed all at once, with no synchronization.","Static Method ","static","IL."," Let's examine the intermediate representation for the lock statement in the above example method A. In compiler theory, high-level source texts are translated to lower-level streams of instructions. ","IL ","il","Tip: ","The lock statement here is transformed into calls to the static methods Monitor.Enter and Monitor.Exit.","Also: ","The lock is actually implemented with a try-finally construct. This uses the exception handling control flow.","Try ","try","Finally ","finally","Intermediate representation for method using lock","\n\n.method private hidebysig static void A() cil managed\n{\n .maxstack 2\n .locals init (\n [0] object obj2)\n L_0000: ldsfld object Program::_object\n L_0005: dup\n L_0006: stloc.0\n L_0007: call void [mscorlib]System.Threading.Monitor::Enter(object)\n L_000c: ldc.i4.s 100\n L_000e: call void [mscorlib]System.Threading.Thread::Sleep(int32)\n L_0013: call int32 [mscorlib]System.Environment::get_TickCount()\n L_0018: call void [mscorlib]System.Console::WriteLine(int32)\n L_001d: leave.s L_0026\n L_001f: ldloc.0\n L_0020: call void [mscorlib]System.Threading.Monitor::Exit(object)\n L_0025: endfinally\n L_0026: ret\n .try L_000c to L_001f finally handler L_001f to L_0026\n}","Relativity."," By using the lock statement to synchronize accesses, we are creating a communication between time and state. The state is connected to the concept of time and sequential accesses to the lock. ","Also: ","In the Theory of Relativity, there is a communication between time and state.","Info: ","This is the speed of light, which is a constant based on the relation of time and space.","Locks: ","This connection (between time and space) is present also in locks\u2014in threading constructs.","Tip: ","For a better description of how relativity mirrors concurrent synchronization, please see the wizard book.","Summary."," Lock is a synchronization construct. We looked at an example program. Next we stepped into the IL. We related the Theory of Relativity and the complexities of the physical universe to threading. ","ins","class","adsbygoogle","data-ad-client","ca-pub-4712093147740724","data-ad-slot","3679700504","data-ad-format","link","ins","class","adsbygoogle","data-ad-client","ca-pub-4712093147740724","data-ad-slot","6227126509","data-ad-format","auto","url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAANwAAAA6CAMAAADsmccsAAAAGFBMVEX////n5+fz8/PZ2dmhoaHHx8deXl4BAQGHoEDwAAACeklEQVR4Xu3a64rDIBAFYOfq+7/x0tKdzR60GWQoFTz/FmTl49gkmrSqWMRaIlvMd3D5HNzBHdzBHdzBHdzBHdzBHRwTiTz0IkR8B4jBMHoVZ+q9d1cpwaHMIO98JIYRogTOLuEWYe0Rp2Iciw0iwMPRGL7F0cUmLaL9X6QURzZJlAGjV3HD0ewdQmU4tKEuP/p2PhkVJ94xXoILW17HtozjUXESImuNNBZmDY7tbRhwtobD4gjXpL5KiD9KcHYTqHkdx6OxsSb5enHxIhzd4QiKW8RhcUGJ4q7LtAgHEmIm8L4tTh5J4MbFcUdca4U4GpZEs+pkdp9nZprgMsXV43BKHl9lZNIzZeeb/8dfmWrgrPA3Bw0NG52Z0zgsjq+Q7nwFeN3VksEwZPCYnMXNi1OwxUK1EhxNmxCsFIencfPl7/8gaqLen2l1OCSgg4biNG7+xBwQvLrU4GT6KMJYEg5P43A/1W5xvA0OQ4BjxOWLy28eE13D8DUcXhkNn8S8bYsjxHXCVfnnV+d9cDj7C4M7Vmvhdd6uOViJ7kELHdwG9/vNNemTWOBCtwWOYGFeo+wXHXvodsFZm+mcAgS6Te5zWF1jfQn0USnopINuFYePX2U4IWLYqUJEXmDQSXT6zc+WuFUdB3XaI/rFuwI81rvVRZyeVFvBMU6Z38/x+mZVWlbn/KTq2k58NqVU78Tz1eFpJqsVnKFQi1DiDEXyuHx1qLMdTr+wurxuh3NLrC6v2+HEGavL63Z4V4DV5XUbvOXB6vI6+tT7ObKql495nW7wZhWqy+tki3fiBNXldPrRrxmWcGg2SunUbZfvUMhAXZ2CL4hgMIzO5gfTZFX+ScMIYwAAAABJRU5ErkJggg==)","url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAANsAAADcCAMAAADOWCTKAAAAwFBMVEX////c3ODj6und5ujx8/P39/fo6/LN0dbt7u/19vX5+vr+/v78/Pz7+/vCxsv9/f2qsLjT1ujw8fv2+fiWnafk8+8sNkfd3P3Q6d99g473+P0AAAD86u38//74+/xYYXHX8+z45O3n//jt//nu9vbo8/Dx/Pn7+vr1//zy//z5//788vTp9/P2/fvlyNfa//Xy7MTg2pzm9fLv//vg//bP+e7/9/fx//D3//b8//zB6+D///vS//PN//Hd+PHMxIBdWCBpAAAMfklEQVR4AezbCXPaSNPA8em5R6MDcQSZMvgC2zh27n2SPd/v/63elsaYENqsHGJbYvWPuSpVqfzS0gipFNbanAuPNtXZurq6umKs1YDO1tmcq/Ebrf4KgrXeRhdsDa2zObf9Dt92tq72jruzdTVjXFnW2bqebRINGEJn6+rqznyack0hxjpbZ2ucrYF1TW+Irmt3QzSleg3bDdWybt8z52X4ummTZZ2ts3W2/6yNr1tTLtfd24iau052ts7W2TpbZ+tsna2ztf/8rbPtk/cveU3hhurZxhbHOxzbMZL2meqCaElFetn+4Ni5+PERTbdbXhCK91+2e0/1hYr6d7meUuCn0QYabPwkG/U3+UJV13b+PLbYSQtaxQdoy5SzVlrr4oOzSdfX2kopuEsOzGZT08/zvhAWBOIOyWZN2kuF4CIXGkAmbbYRtOFRTwuhudaGq/hgbDZNe2g7GeZQjk1rLuMDsVkcWg/M0QnijAED6HPxQdh0RTs+zo/enBylJgfQHISM22kjaE5aa07evDkyBrTIBeKSltsCbQgqkQKgwkGaamN4wLXZFmgiihI3ziFMrtfLocL145e2FUXBP5dxbE9boPEsYZOxHuec5SUuH6YiF9oIlbTMRtCUU74/LgfHwj6Xg+CaG+HittoCTSQqsTZi41yDucfleS4MfgYZt9RmSxpEEc5NOu/7BrMsrXACcgM6h37cyrVEB5pSSJNOJowHnLnHQa51LhDXNlug9USUZGLslORcOGYNWKvvcQBagICAq29b1redUy23+1zj4hdBu7qKpcjHShaFAMUk8BhxecAJkRoOwsXBRkRd4jl/T/UX0fu64M/0BaKdNIiSREnZz8fSFoXlCicn/AMuNdrkInz9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)","url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAABDCAMAAADu8bq3AAAAMFBMVEX/////87L/99H/63he//Os//jR//v/507/7pH//fX/++aO//b/5C/p//0A//D0//4M59PNAAAC9klEQVR4XtXa627qMBCFUc+M77nw/m97dFAreWscJg2BOPsfpTJdEp8SQd0QW5sFd8FGgqzdxS4grt2NBrFPC/eD+C7E3w+yGuiRIXYk8Y6QYCQyMMSOxN8RshrmcSF2JPGeEH1euCdkUpDpcxDf7GzIeuA3L926N5J4T4iOJNwJEjxEspWID6ND4P2zLY5ueMhjKxIgPvZBmIlE0vx/STJxOQNQmJ5niuCBCHFeRaIT8c6C1OeL6WX+63VkbkbOOc7qwD5k6keCT7yGUAYDTuobkEL6ZCldSBuJ37pjjK8h88slPgyR1D2wdiAIWxrH0nINiLF6FIJDiYZMcGQvkelNSCrnQmYpPUjoRYI+A5IsST4ZMpOGYCQbiRgQma3VkyGpKAhWvfQTeRtCJ0NmUhAdiU7kfYicDUka0o8EdfshSZ5TF8ezIXPtQBYdCb7fLAgRM3MBXM0YyWGIPE9X11xSEIzk8eN4IE5D7IGED0ESsftdyQDJCoKRRH3HOB2EMMR5CELbKYqCqL9a2Q5C3NkQhki62epIPFjHgDjB6hCiIlGJjAMhqK4HCRAJJhLGgbABwUhUIscgzHwBBCJRieyHVCbKItIIzoQUQHYhU0ND2LQXUgla/ATEmRCMRCdiQygB4DLI0hyLrmUPhIFxGQSj8OqRCSEAXAnBSDARG8LzKBCsIsIDG1LSSJBHc26byMOG0DwOBLOARGxIJ3QRIaJrIKHBQYcWhNGQuf4KL4BgJI0p2hBSH51dC2l8HpwWRPD06yHTqjf9EZLcAJDQgYQdEIh8BEjsQOIdIc4rh3e3hOhIJgOiLyNDQEI/ETv2ZrwFyV+ELAqy7IHk/jchhQme+CLE+W4i9gURJMTM1PlSkb4ImTYTsW9R7Al/DRJXXDQgULs9+hqkIQLSgOTxIBiJ3wmp40ECQMJOiKPhIBhJ3AspMhrExXbOgNiSlFoIfw+CMyAg6QWf2VUZHaLGGRWZCvz8E5APrVKW9Pt/WmCkLAKQc/YPKd9C4FftKeoAAAAASUVORK5CYII=)"]

["url(data:image/png;base64,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)","url(data:image/png;base64,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)","url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALwAAAByCAAAAADMwOSzAAACe0lEQVR4Xu3csY7kMAgG4Lz/86Wkp6ZAokDy6RTfodVsTDSaxPy7/uux9a0LZpkEb20YNzNVEWYmItr/hYiYWcS8Tcw2cKv8DTPtoxCzqFfC+wGXgCchYlGvgDfp9MBd/xNsIj7otL8XHwC8x14Sq04/Yine4tRvwEvP6ypqPXp+dgneY+nbaZPwHscOh7eww+HDjoL/uJ1m4D3scPjYFw8fawDxUWjw8LErFP7TB7/z0/jYFA8fB4+Il1iQh47UwF//fvrfLPV/t0WEj+52Ev5yjWc96y/MNNrdR/EX6yRZuxb3Z/Ge10lu1/MsPm9auZXFS09iL4n3DE+tLD5vQrQsPi+U1ArjJcELAv7Og/eeAT4+cor3r2lbVPk7Sk30ODeEt3R/QcZ7YXxWbKgB47kyPis2goy3ynhP8K00frw9lcbbD8bz3fiFJ0S8jvEyCb/wioy30nhZ+Kz/Mz3CPa8S0h7hI9+AtMeOeIb3cBRswGO7UviFfwO48Au/8Au/8OhfUgu/8EkzUhqvNfELr8h4+cV477EuGvSw0sPnPaz06BHbDOJHp/UrMf6TkYVfD9RagndkvCI/vpfSeAN+9yDbn0rjPdnfEPCC+JpWS/BUGJ8PGWldfH46XBifzy1oXXw+qkOF8dE1wr2Cful4uC7epQdu7OLimBRpRfzlmkDiw1kjNRFmmjehto9DLJZNeT2P1zfG66jKbKAjDzbGCkS8Iw/zxhJAfGyLiI9aj4iPRYg3ToQeEB87EyLepQcLnyzEwIceER8VEwT/6fu0JuKDzwSA/yifWGbhIxb+y2wWm9DDJnc+UtE7HwOfXOTB/KX1o37bppq3efkDT4lpi2pYKzIAAAAASUVORK5CYII=)"]