Community
cancel
Showing results for 
Search instead for 
Did you mean: 
raman__rohit
Beginner
75 Views

tbb concurrent_hash_map implementation

I am trying to use tbb’s concurrent_hash_map to increase my application’s concurrent performance. Read up about it and implemented it

according to my application but I am seeing crashes..

So, my application is a multi threaded application where I am storing pairs, key is char* and the value is integer. Pseudo code looks like this:   

void  storeName(const char * name)   {
    int id=0;
    // This creates an pair object of name and index
    pair object(name);
    // concurrent_hash_table is an object of tbb::concurrent_hash_map and is declared in .h file
    // read_lock is a const accessor for reading. This find function searches for char* in the table
    // and if not found, create a write_lock.
    bool found = concurrent_hash_table.find(read_lock, name);  
    if (found == FALSE) {
        concurrent_hash_table.insert(write_lock, name);
        // Get integer id somehow.
        write_lock->second = id; 
        write_lock.release();         
    } else {
        // if the name is found in the table then get the value and release it later
        id = read_lock->second;
        read_lock.release();
    }
}

As per my understanding, I am good with the implementation but as I said, there are multiple crashes coming when find returns me FALSE.

Crash have traces of mutexs as well.

0 Kudos
1 Reply
Alexey_K_Intel3
Employee
75 Views

Hi Rohit,

the pseudocode looks reasonable; the problem must be somewhere else.

Could you provide some more information - ideally a reproducer (see for example Stack Overflow recommendations for this), or at least a stack trace for the crash?

Reply