Archivio Tag: c++

dic 14

Il C++ e 5 malefici cast

In C è facile spararti in un piede; In Cpp è più difficile ma se ci riesci ti salta via l’intera gamba. – Bjarne Stroustrup Una cosa che dico sempre del Cpp è che è un linguaggio che va dominato e che insegnarlo a un principiante sarebbe come dare un mitragliatore al tipo che entra …

Continua a leggere »

Share Button

feb 09

Contare le coppie adiacenti in una sequenza in tempo nLog(n)

AlberoCoppie

Contare le coppie adiacenti in una sequenza in tempo nLog(n) (Appello Settembre 2010) il testo recita: Sia data una sequenza di interi a1 , a2 , . . . , an . Diciamo che la sequenza contiene una coppia di numeri consecutivi se esistono due interi ai e aj tali che ai = aj + …

Continua a leggere »

Share Button

nov 25

le Condition, implementazione delle code di attesa. il problema del barbiere addormentato (C++0x – C++11)

Le Condition Le Condition sono un meccanismo di sincronizzazione che permette ai thread di sospendersi in attesa che avvenga un evento e di essere risvegliati quando l’evento accade, permettono quindi di creare delle code di attesa. Nelle STL le condition sono oggetti della classe std::condition_variable , i metodi fondamentali per usarle sono tre: wait() permette …

Continua a leggere »

Share Button

nov 09

Uso avanzato dei Mutex, i 5 Filosofi (C++0x – C++11)

Illustrazione originale dal testo di Dijkstra

Nell’articolo precedente ho parlato del mutex e del suo uso semplice con la lock_guard. in questo tratterò gli altri tipi di guard e l’uso avanzato dei mutex unique_lock Con unique_lock un mutex può fare molto di più di quello che permette la lock_guard : Si può cercare di prenotarlo in maniera non bloccante ( se …

Continua a leggere »

Share Button

ott 20

Sincronizzazione dei Thread e gestione delle risorse con i Mutex ( C++0X – C++11)

L’accesso concorrente ai dati o alle risorse può provocare incoerenze nei dati o situazioni di deadlock nel caso di risorse che prevedono accesso esclusivo, in questo post cercherò di analizzare gli strumenti che C++0X offre per la sincronizzazione. in particolare i Mutex

Share Button

ott 11

Il C++ e il Multithreading (C++0X – C++11)

Un’altra funzionalità molto interessante introdotta nel C++0X oltre sono le lambda descritte nell’articolo precedente è il supporto nativo al multithreading.

Esistevano già librerie che si occupavano di multithreading in cpp ma adesso è integrato nel linguaggio…

Share Button

mar 24

il C++ e le lambda ( C++0X – C++11)

Kiss

Un interessante funzione introdotta nello standard C++0X sono le lambda Le funzioni lambda sono tipiche dei linguaggi che applicano il paradigma della programmazione funzionale ( completamente o in maniera ibrida) e permettono di trattare le funzioni come se fossero oggetti, potendole quindi definire in qualunque punto del codice e assegnare a una variabile. Vediamo un esempio …

Continua a leggere »

Share Button

feb 24

Il C++ non è ancora morto ( C++11 )

Uno dei linguaggi che ho visto più maltrattare all’Università e di conseguenza poi da molti (sedicenti e/o futuri) ingegneri del software che hanno fatto il grave errore di accettare acriticamente le illazioni dei professori è il C++ (un mio professore ne aveva quasi terrore… ) Michele Sciabarrà anni fa scrisse in un suo post veramente geniale: C++ Livello …

Continua a leggere »

Share Button