- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I've been stuck for a while trying to compile a trivial concurrent_queue, hopefully somebody could point out where I faltered.
gcc (Gentoo 4.3.2 p1.1) 4.3.2
Linux 2.6.29
tbb22_20090908oss (have also triedtbb22_004oss andtbb22_20090809oss)
g++ -g -o test-tbb test-tbb.cpp -DTBB_DO_ASSERT -MMD -DDO_ITT_NOTIFY -O0 -DUSE_PTHREAD -m64 -Wall -I../libs/tbb22/include/ -L ../libs/tbb22/lib_debug -ltbb_debug -lpthread -lrt
/* file: test-tbb.cpp */
#include
#include
using namespace std;
using namespace tbb;
int main() {
concurrent_queue queue;
queue.set_capacity(10);
for(int i=0; i < 10; ++i)
queue.push(i);
int ret;
while(!queue.empty()) {
queue.pop_if_present(ret);
cout << ret << " ";
}
cout << endl;
return 0;
}
/* this is the g++ error I get at compile-time */
test-tbb.cpp: In function int main():
test-tbb.cpp:9: error: class tbb::strict_ppl::concurrent_queue > has no member named set_capacity
test-tbb.cpp:16: error: class tbb::strict_ppl::concurrent_queue > has no member named pop_if_present
make: *** [test-tbb] Error 1
1. I don't know what namespace strict_ppl is, on the Reference Manual it says that this namespace is used when in tbb/compat.ppl.h is included.
2. I keep looking at the doxygen and the method name does exists. Could I be using the wrong version of class concurrent_queue<>?
3. The include is set correctly, since tbb only has one directory -there is no ambiguity-.
Appreciate any help, I'm sure I'm overlooking something...
1 Solution
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Quoting - carlosrene
I've been stuck for a while trying to compile a trivial concurrent_queue, hopefully somebody could point out where I faltered.
gcc (Gentoo 4.3.2 p1.1) 4.3.2
Linux 2.6.29
tbb22_20090908oss (have also triedtbb22_004oss andtbb22_20090809oss)
g++ -g -o test-tbb test-tbb.cpp -DTBB_DO_ASSERT -MMD -DDO_ITT_NOTIFY -O0 -DUSE_PTHREAD -m64 -Wall -I../libs/tbb22/include/ -L ../libs/tbb22/lib_debug -ltbb_debug -lpthread -lrt
/* file: test-tbb.cpp */
#include
#include
using namespace std;
using namespace tbb;
int main() {
concurrent_queue queue;
queue.set_capacity(10);
for(int i=0; i < 10; ++i)
queue.push(i);
int ret;
while(!queue.empty()) {
queue.pop_if_present(ret);
cout << ret << " ";
}
cout << endl;
return 0;
}
/* this is the g++ error I get at compile-time */
test-tbb.cpp: In function int main():
test-tbb.cpp:9: error: class tbb::strict_ppl::concurrent_queue > has no member named set_capacity
test-tbb.cpp:16: error: class tbb::strict_ppl::concurrent_queue > has no member named pop_if_present
make: *** [test-tbb] Error 1
1. I don't know what namespace strict_ppl is, on the Reference Manual it says that this namespace is used when in tbb/compat.ppl.h is included.
2. I keep looking at the doxygen and the method name does exists. Could I be using the wrong version of class concurrent_queue<>?
3. The include is set correctly, since tbb only has one directory -there is no ambiguity-.
Appreciate any help, I'm sure I'm overlooking something...
It looks like you are using TBB 2.2, but your code looks like the 2.1 API. Some small API changes were made between 2.1 and 2.2. You should double-check the latest documentation for the new use of concurrent_queue. My blog here has a quick summary of the changes.
Cheers,
Terry
Link Copied
1 Reply
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Quoting - carlosrene
I've been stuck for a while trying to compile a trivial concurrent_queue, hopefully somebody could point out where I faltered.
gcc (Gentoo 4.3.2 p1.1) 4.3.2
Linux 2.6.29
tbb22_20090908oss (have also triedtbb22_004oss andtbb22_20090809oss)
g++ -g -o test-tbb test-tbb.cpp -DTBB_DO_ASSERT -MMD -DDO_ITT_NOTIFY -O0 -DUSE_PTHREAD -m64 -Wall -I../libs/tbb22/include/ -L ../libs/tbb22/lib_debug -ltbb_debug -lpthread -lrt
/* file: test-tbb.cpp */
#include
#include
using namespace std;
using namespace tbb;
int main() {
concurrent_queue queue;
queue.set_capacity(10);
for(int i=0; i < 10; ++i)
queue.push(i);
int ret;
while(!queue.empty()) {
queue.pop_if_present(ret);
cout << ret << " ";
}
cout << endl;
return 0;
}
/* this is the g++ error I get at compile-time */
test-tbb.cpp: In function int main():
test-tbb.cpp:9: error: class tbb::strict_ppl::concurrent_queue > has no member named set_capacity
test-tbb.cpp:16: error: class tbb::strict_ppl::concurrent_queue > has no member named pop_if_present
make: *** [test-tbb] Error 1
1. I don't know what namespace strict_ppl is, on the Reference Manual it says that this namespace is used when in tbb/compat.ppl.h is included.
2. I keep looking at the doxygen and the method name does exists. Could I be using the wrong version of class concurrent_queue<>?
3. The include is set correctly, since tbb only has one directory -there is no ambiguity-.
Appreciate any help, I'm sure I'm overlooking something...
It looks like you are using TBB 2.2, but your code looks like the 2.1 API. Some small API changes were made between 2.1 and 2.2. You should double-check the latest documentation for the new use of concurrent_queue. My blog here has a quick summary of the changes.
Cheers,
Terry

Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page