Ég ákvað að skrifa hér um smá forritunar dæmi sem ég hef lent í. Ég ætla að lofsama Windows og níða Línux. Svo ég er viðbúinn öllum Línux pretikunum ( býst við þeim ) en vinsamlegast haldið þeim á rökrænum nótum.

Þannig var að ég var að skrifa hugbúnað sem þarf að nýta sér marga þræði þegar hann keyrir sem er svona næstum eins og að keyra mörg forrit samtímis nema þau eru öll pökkuð í sama forritið. Einn af eiginleikum forritsins var það að þræðirnir þurfa að fá aðgang að sömu gögnunum en það gefur auga leið að þeir meiga ekki vera að fikta í þeim tveir eða fleiri á sama tíma. Svo það þarf að stilla þræðina saman. Þetta er gert með svokölluðum synchronization hlutum. Í Windows eru til nokkrir svona hlutir t.d. CriticalSection, Semaphore, Mutex, Event o.s.fv. Allir hafa þessir hlutir sinn tilgang og stað þar sem gott er að nota þá. T.d. er gott að nota Event til að láta einn þráð vita að einhverju sé lokið meðan gott er að nota CriticalSection til að venda að tveir þræðir fikti ekki í sömu gagnahólfunum á sama tíma. Svo hugbúnaðargerðin gekk bara vel í Windows og ég var mjög fljótur að ljúka hugbúnaðinum þar. Svo kom að því að gera það sama fyrir Línux. Í fyrsta laga var nú ekki hlaupið að því að finna þræði í Línux en svo fannst pThreads. En nú voru vandræðin fyrst að byrja. pThreads voru einungis með einn synchronization hlut sem kallaður er Mutex. Þetta olli mér miklum heilabrotum en ég komst svo að því að hægt væri að skrifa klasasafn fyrir alla hina hlutina sem ég notaði í windows. Hinsvegar var einnig ljóst að þetta yrði aldrei eins hraðvirkt á Línux því til að fá fram hegðun hlutana þarf að nota marga mutex-a. Ég varð því skrifaði þetta klasasafn því ég fann ekkert svipað. Þetta tók nokkuð langan tíma og var alger hell að debuga því svo ótalmargar stöður geta komið upp. Eftir alltof mikinn tíma var ég loks sáttur og hef notað þetta safn mitt síðan. Nú og hver er svo niðurstaðan með öllu þessu bulli. Jú hún er sú að oft á tíðum lendir maður í því í Línux að engin þægindi eru sett inní kerfið ( eitt sync object ), maður verður einfaldlega að gera þetta allt sjálfur. Windows hins vegar er með fullt af svona nice hlutum sem maður bara notar. Þeir eru yfirleitt mikið prófaðir og svo maður getur treyst að þeir virka ólíkt mörgum klasasöfnum sem maður finnur fyrir Linux. Maður þarf því ekki að vera að finna upp hjólið aftur og aftur eins og svo oft vill verða í Linux.

Jæja Linux karlar. Hellið ykkur yfir mig en verið málefnalegi