{"id":1187,"date":"2023-06-28T16:54:34","date_gmt":"2023-06-28T14:54:34","guid":{"rendered":"https:\/\/bitcamp.it\/blog\/?p=1187"},"modified":"2023-06-28T16:54:35","modified_gmt":"2023-06-28T14:54:35","slug":"critical-section","status":"publish","type":"post","link":"https:\/\/bitcamp.it\/blog\/glossario\/critical-section\/","title":{"rendered":"Critical Section"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">In informatica, una critical section \u00e8 un <strong>pezzo di codice<\/strong> in cui deve essere garantito che non ci sar\u00e0 mai pi\u00f9 di un thread contemporaneamente. \u00c8 necessario utilizzare le critical section quando \u00e8 possibile accedere a risorse condivise da pi\u00f9 thread .<br><br>Quando flussi diversi accedono a una risorsa comune in tempi diversi, ognuno di essi pu\u00f2<strong> completare la propria operazione<\/strong>, di lettura o di scrittura, senza essere confuso dagli altri. Se questa condizione vale sempre per una certa risorsa, allora si dice che la lettura e la scrittura su quella risorsa sono <strong>operazioni atomiche<\/strong>: ogni flusso pu\u00f2 intervenire solo prima o dopo che l&#8217;altro abbia completato la propria operazione, e non pu\u00f2 interromperla.<br><br>Consideriamo due thread che desiderano incrementare lo stesso contatore. L&#8217;incremento deve essere protetto da una critical section. In effetti, l&#8217;incremento di una variabile non \u00e8 necessariamente un&#8217;operazione atomica. Si po&#8217; tradurre l&#8217;incremento di una variabile in un codice assembly.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Una critical section \u00e8 un pezzo di codice in cui deve essere garantito che non ci sar\u00e0 mai pi\u00f9 di un thread contemporaneamente.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[16],"tags":[22],"class_list":["post-1187","post","type-post","status-publish","format-standard","hentry","category-glossario","tag-c"],"_links":{"self":[{"href":"https:\/\/bitcamp.it\/blog\/wp-json\/wp\/v2\/posts\/1187","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bitcamp.it\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bitcamp.it\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bitcamp.it\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/bitcamp.it\/blog\/wp-json\/wp\/v2\/comments?post=1187"}],"version-history":[{"count":1,"href":"https:\/\/bitcamp.it\/blog\/wp-json\/wp\/v2\/posts\/1187\/revisions"}],"predecessor-version":[{"id":1188,"href":"https:\/\/bitcamp.it\/blog\/wp-json\/wp\/v2\/posts\/1187\/revisions\/1188"}],"wp:attachment":[{"href":"https:\/\/bitcamp.it\/blog\/wp-json\/wp\/v2\/media?parent=1187"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bitcamp.it\/blog\/wp-json\/wp\/v2\/categories?post=1187"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bitcamp.it\/blog\/wp-json\/wp\/v2\/tags?post=1187"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}