{:highlights [{:id #uuid "6433ca28-1bdf-433d-8ed9-0d54bf5ba940", :page 311, :position {:bounding {:x1 199.265625, :y1 543.921875, :x2 243.2843017578125, :y2 563.921875, :width 719.9999999999999, :height 1080}, :rects ({:x1 199.265625, :y1 543.921875, :x2 243.2843017578125, :y2 563.921875, :width 719.9999999999999, :height 1080}), :page 311}, :content {:text "thread"}, :properties {:color "yellow"}} {:id #uuid "6433cb56-fbef-46da-83c2-13fa2dba2967", :page 311, :position {:bounding {:x1 577.609375, :y1 1234.609375, :x2 804.0300903320312, :y2 1264.609375, :width 1094.3999999999999, :height 1641.6}, :rects ({:x1 577.609375, :y1 1234.609375, :x2 804.0300903320312, :y2 1264.609375, :width 1094.3999999999999, :height 1641.6}), :page 311}, :content {:text "thread control blocks"}, :properties {:color "yellow"}} {:id #uuid "6433cb70-d168-4863-8268-1e969df6ce06", :page 311, :position {:bounding {:x1 274.29595947265625, :y1 1133.640625, :x2 422.473388671875, :y2 1163.640625, :width 1094.3999999999999, :height 1641.6}, :rects ({:x1 274.296875, :y1 1133.640625, :x2 422.473388671875, :y2 1163.640625, :width 1094.3999999999999, :height 1641.6} {:x1 274.29595947265625, :y1 1135.125, :x2 274.3037109375, :y2 1158.125, :width 1094.3999999999999, :height 1641.6}), :page 311}, :content {:text "context switch"}, :properties {:color "yellow"}} {:id #uuid "6433cba2-61bd-4549-a29f-2ad85b3e30cd", :page 312, :position {:bounding {:x1 480.51898193359375, :y1 1039.890625, :x2 683.934814453125, :y2 1069.890625, :width 1094.3999999999999, :height 1641.6}, :rects ({:x1 480.53125, :y1 1039.890625, :x2 610.921875, :y2 1069.890625, :width 1094.3999999999999, :height 1641.6} {:x1 480.51898193359375, :y1 1041.375, :x2 683.934814453125, :y2 1064.375, :width 1094.3999999999999, :height 1641.6}), :page 312}, :content {:text "thread-local storage,"}, :properties {:color "yellow"}} {:id #uuid "6433e4cc-69e4-4057-8cc6-1766240d82f4", :page 320, :position {:bounding {:x1 554.1071472167969, :y1 682.4375152587891, :x2 670.6859741210938, :y2 705.8660888671875, :width 864, :height 1296}, :rects ({:x1 554.1071472167969, :y1 682.4375152587891, :x2 670.6859741210938, :y2 705.8660888671875, :width 864, :height 1296}), :page 320}, :content {:text "race condition"}, :properties {:color "yellow"}} {:id #uuid "6433e52b-1f38-4f7c-b168-0aed624f9bdf", :page 320, :position {:bounding {:x1 0, :y1 509.14286518096924, :x2 746.7916259765625, :y2 922.9732360839844, :width 864, :height 1296}, :rects ({:x1 0, :y1 509.14286518096924, :x2 0, :y2 530.2857236862183, :width 864, :height 1296} {:x1 0, :y1 525.142865896225, :x2 0, :y2 546.285724401474, :width 864, :height 1296} {:x1 515.8003540039062, :y1 865.4107360839844, :x2 746.7916259765625, :y2 883.1250305175781, :width 864, :height 1296} {:x1 171.89286041259766, :y1 885.3303833007812, :x2 745.5325088500977, :y2 903.2589416503906, :width 864, :height 1296} {:x1 171.89286041259766, :y1 905.2589416503906, :x2 682.6857986450195, :y2 922.9732360839844, :width 864, :height 1296}), :page 320}, :content {:text "A critical section is a piece of code that accesses a shared variable (or more generally, a shared resource) and must not be concurrently executed by more than one thread."}, :properties {:color "yellow"}} {:id #uuid "6433e566-e6ef-45b3-84b1-eba981be914a", :page 320, :position {:bounding {:x1 0, :y1 557.1428680419922, :x2 752.232177734375, :y2 984.7500305175781, :width 864, :height 1296}, :rects ({:x1 0, :y1 557.1428680419922, :x2 0, :y2 578.2857246398926, :width 864, :height 1296} {:x1 0, :y1 573.1428680419922, :x2 0, :y2 594.2857284545898, :width 864, :height 1296} {:x1 601.2857360839844, :y1 925.5268249511719, :x2 743.2662353515625, :y2 948.9553833007812, :width 864, :height 1296} {:x1 743.2589721679688, :y1 927.1875305175781, :x2 752.232177734375, :y2 945.1160888671875, :width 864, :height 1296} {:x1 171.89286041259766, :y1 947.107177734375, :x2 745.5417861938477, :y2 965.0357360839844, :width 864, :height 1296} {:x1 171.89286041259766, :y1 967.0357360839844, :x2 576.7512893676758, :y2 984.7500305175781, :width 864, :height 1296}), :page 320}, :content {:text "mutual exclusion. This property guarantees that if one thread is executing within the critical section, the others will be prevented from doing so."}, :properties {:color "yellow"}} {:id #uuid "6433e6a1-407c-4936-b184-dee868ef4107", :page 321, :position {:bounding {:x1 423.9821548461914, :y1 850.3928833007812, :x2 509.6704788208008, :y2 873.8214721679688, :width 864, :height 1296}, :rects ({:x1 423.9821548461914, :y1 850.3928833007812, :x2 509.6704788208008, :y2 873.8214721679688, :width 864, :height 1296}), :page 321}, :content {:text "atomically"}, :properties {:color "yellow"}} {:id #uuid "6433e6e7-d995-4b69-96b3-261b79f94c1d", :page 322, :position {:bounding {:x1 715.2017593383789, :y1 262.08929443359375, :x2 746.7634048461914, :y2 279.8035888671875, :width 864, :height 1296}, :rects ({:x1 715.2017593383789, :y1 262.08929443359375, :x2 746.7634048461914, :y2 279.8035888671875, :width 864, :height 1296}), :page 322}, :content {:text "sane"}, :properties {:color "green"}} {:id #uuid "6433e729-7043-453b-8d60-6e6c41560543", :page 322, :position {:bounding {:x1 0, :y1 125.14286422729492, :x2 747.738899230957, :y2 366.5625114440918, :width 864, :height 1296}, :rects ({:x1 0, :y1 125.14286422729492, :x2 0, :y2 146.28571701049805, :width 864, :height 1296} {:x1 712.866096496582, :y1 323.2053642272949, :x2 747.738899230957, :y2 346.6339530944824, :width 864, :height 1296} {:x1 171.90179443359375, :y1 343.1339530944824, :x2 366.5299377441406, :y2 366.5625114440918, :width 864, :height 1296}), :page 322}, :content {:text "synchronization primitives"}, :properties {:color "yellow"}} {:id #uuid "6433eabf-48d6-4776-b66f-a5f7804d1ddc", :page 323, :position {:bounding {:x1 320.0720024108887, :y1 195.0178680419922, :x2 547.6788444519043, :y2 212.94644165039062, :width 864, :height 1296}, :rects ({:x1 320.0720024108887, :y1 195.0178680419922, :x2 547.6788444519043, :y2 212.94644165039062, :width 864, :height 1296}), :page 323}, :content {:text " KEY CONCURRENCY TERMS"}, :properties {:color "yellow"}} {:id #uuid "6433f35b-403b-4b25-b9f9-076e9e34777e", :page 327, :position {:bounding {:x1 585.9527893066406, :y1 368.6517906188965, :x2 738.0721740722656, :y2 409.2232322692871, :width 921.6, :height 1382.4}, :rects ({:x1 585.9527893066406, :y1 368.6517906188965, :x2 738.0721740722656, :y2 409.2232322692871, :width 921.6, :height 1382.4}), :page 327}, :content {:text "Thread API"}, :properties {:color "yellow"}} {:id #uuid "6433f45b-0345-4790-8379-3d1a94e57ef5", :page 339, :position {:bounding {:x1 617.5714492797852, :y1 347.3571548461914, :x2 691.9386367797852, :y2 385.0714416503906, :width 864, :height 1296}, :rects ({:x1 617.5714492797852, :y1 347.3571548461914, :x2 691.9386367797852, :y2 385.0714416503906, :width 864, :height 1296}), :page 339}, :content {:text "Locks"}, :properties {:color "yellow"}} {:id #uuid "6433f4ba-f2e4-4743-a536-e2b7747433b7", :page 339, :position {:bounding {:x1 140.0178680419922, :y1 979.4018249511719, :x2 325.5472869873047, :y2 997.1161193847656, :width 864, :height 1296}, :rects ({:x1 140.0178680419922, :y1 979.4018249511719, :x2 325.5472869873047, :y2 997.1161193847656, :width 864, :height 1296}), :page 339}, :content {:text "A lock is just a variabl"}, :properties {:color "yellow"}} {:id #uuid "6433f5e6-bc06-42a9-866e-e9a3053f528f", :page 340, :position {:bounding {:x1 0, :y1 349.1428680419922, :x2 745.5471057891846, :y2 658.3750305175781, :width 864, :height 1296}, :rects ({:x1 0, :y1 349.1428680419922, :x2 0, :y2 370.2857360839844, :width 864, :height 1296} {:x1 0, :y1 365.1428680419922, :x2 0, :y2 386.2857360839844, :width 864, :height 1296} {:x1 706.2289886474609, :y1 600.8125305175781, :x2 745.5282440185547, :y2 618.5268249511719, :width 864, :height 1296} {:x1 171.89286994934082, :y1 620.732177734375, :x2 745.5471057891846, :y2 638.6607360839844, :width 864, :height 1296} {:x1 171.89286994934082, :y1 640.6607360839844, :x2 318.0395984649658, :y2 658.3750305175781, :width 864, :height 1296}), :page 340}, :content {:text "locks help transform the chaos that is traditional OS scheduling into a more controlled activity."}, :properties {:color "yellow"}} {:id #uuid "6433fb69-1425-46b4-996f-f91da5d3e8d0", :page 341, :position {:bounding {:x1 452.08409881591797, :y1 710.0000305175781, :x2 525.8427047729492, :y2 727.7143249511719, :width 864, :height 1296}, :rects ({:x1 452.08409881591797, :y1 710.0000305175781, :x2 525.8427047729492, :y2 727.7143249511719, :width 864, :height 1296}), :page 341}, :content {:text "efficacy "}, :properties {:color "green"}} {:id #uuid "6433fbfd-a1bf-4fd9-a54d-e15189c77b15", :page 342, :position {:bounding {:x1 171.88867950439453, :y1 179.01788330078125, :x2 385.91197204589844, :y2 200.732177734375, :width 864, :height 1296}, :rects ({:x1 171.88867950439453, :y1 179.01788330078125, :x2 385.91197204589844, :y2 200.732177734375, :width 864, :height 1296}), :page 342}, :content {:text "Controlling Interrupts"}, :properties {:color "yellow"}} {:id #uuid "6433fe7e-2221-41ee-ad6b-7deaa4459aa5", :page 343, :position {:bounding {:x1 116.09821701049805, :y1 691.2232360839844, :x2 532.493236541748, :y2 712.9375305175781, :width 864, :height 1296}, :rects ({:x1 116.09821701049805, :y1 691.2232360839844, :x2 532.493236541748, :y2 712.9375305175781, :width 864, :height 1296}), :page 343}, :content {:text "A Failed Attempt: Just Using Loads/Stores"}, :properties {:color "yellow"}} {:id #uuid "6433ff4a-856d-4e4b-af30-6cb600aefeb5", :page 343, :position {:bounding {:x1 0, :y1 509.1428680419922, :x2 690.1883277893066, :y2 893.2232666015625, :width 864, :height 1296}, :rects ({:x1 0, :y1 509.1428680419922, :x2 0, :y2 530.2857208251953, :width 864, :height 1296} {:x1 594.5398139953613, :y1 855.3660888671875, :x2 689.8509101867676, :y2 873.0803833007812, :width 864, :height 1296} {:x1 116.09821701049805, :y1 875.294677734375, :x2 690.1883277893066, :y2 893.2232666015625, :width 864, :height 1296}), :page 343}, :content {:text " use a simple variable (flag) to indicate whether some thread has possession of a lock."}, :properties {:color "yellow"}} {:id #uuid "64340154-807c-4a7a-b783-045d5d6d3927", :page 344, :position {:bounding {:x1 347.09178161621094, :y1 733.5803985595703, :x2 635.6820526123047, :y2 755.294677734375, :width 864, :height 1296}, :rects ({:x1 347.09178161621094, :y1 733.5803985595703, :x2 635.6820526123047, :y2 755.294677734375, :width 864, :height 1296}), :page 344}, :content {:text "Spin Locks with Test-And-Set"}, :properties {:color "yellow"}} {:id #uuid "643401e0-fcec-41d3-9898-d5c4175ac464", :page 344, :position {:bounding {:x1 171.89287185668945, :y1 903.1607666015625, :x2 544.1298828125, :y2 927.9286193847656, :width 864, :height 1296}, :rects ({:x1 435.919677734375, :y1 903.1607666015625, :x2 441.9018249511719, :y2 915.1607666015625, :width 864, :height 1296} {:x1 171.89287185668945, :y1 904.5000610351562, :x2 271.8574905395508, :y2 927.9286193847656, :width 864, :height 1296} {:x1 300.0535888671875, :y1 904.5000610351562, :x2 435.9386901855469, :y2 927.9286193847656, :width 864, :height 1296} {:x1 266.50001525878906, :y1 907.357177734375, :x2 544.1298828125, :y2 925.2857666015625, :width 864, :height 1296}), :page 344}, :content {:text "test-and-set (or atomic exchange1) instruction"}, :properties {:color "yellow"}}], :extra {:page 345}}