小编jac*_*hab的帖子

我是否需要在push_back pop_front场景中使用互斥锁锁定STL列表?

我有一个线程推送到STL列表和从列表弹出前面的另一个线程.在这种情况下,是否需要使用互斥锁锁定列表?

c++ multithreading stl

8
推荐指数
1
解决办法
5386
查看次数

pthread条件变量

我正在实现一个包含任务队列的线程.第一个任务添加到队列后,线程就会开始运行它.

我应该使用pthread条件变量来唤醒线程还是有更合适的机制?

如果我pthread_cond_signal()在其他线程没有被阻止pthread_cond_wait()而是做某事时调用,会发生什么?信号会丢失吗?

pthreads

8
推荐指数
2
解决办法
1万
查看次数

如何使用其先前的定义重新定义宏

假设我有以下宏:

#define xxx(x) printf("%s\n",x);
Run Code Online (Sandbox Code Playgroud)

现在在某些文件中我想使用此宏的"增强"版本而不更改其名称.新版本探索了原始版本的功能,并做了一些更多的工作.

#define xxx(x) do { xxx(x); yyy(x); } while(0)
Run Code Online (Sandbox Code Playgroud)

这当然给了我重新警告但是为什么我在这个范围内没有声明'xxx'?我该如何正确定义?

编辑:根据这个http://gcc.gnu.org/onlinedocs/gcc-3.3.6/cpp/Self_002dReferential-Macros.html它应该是可能的

macros c-preprocessor

8
推荐指数
2
解决办法
8025
查看次数

环回接口上的原始套接字是否可行?

我们正试图通过原始套接字与侦听Linux环回接口的服务器进行通信,似乎服务器没有从我们那里获得单个数据包.我们发送的数据包在Wireshark中可见.

是否可以在环回上使用原始套接字?(请不要问我们为什么需要它:这里解释起来太复杂了)

编辑:这是我们打开它的方式

_I_RawSocket = socket( PF_PACKET, SOCK_RAW, htons(ETH_P_ALL)))

memset( &ifr, 0, sizeof( ifr ) );
strcpy( ifr.ifr_ifrn.ifrn_name, _InterfaceName);

ioctl( _I_RawSocket, SIOCGIFINDEX, &ifr )

memset( &sll, 0, sizeof( sll ) );
sll.sll_family   = AF_PACKET;
sll.sll_ifindex  = ifr.ifr_ifindex;
sll.sll_protocol = htons( ETH_P_ALL );

bind( _I_RawSocket, (struct sockaddr *) &sll, sizeof( sll ))
Run Code Online (Sandbox Code Playgroud)

服务器是lighttpd,可以通过localhost上的普通套接字访问.netstat --raw打印空表但我绝对相信我们在普通eth设备上有两个功能原始套接字.

sockets linux raw-sockets

8
推荐指数
1
解决办法
5771
查看次数

创建自定义Android键盘布局

我想为Android 2.3键盘创建自定义布局.我从哪里开始?目前我对Android平台没有任何经验.

是否有可能破解现有的键盘布局,以便我不必从头开始创建新的键盘布局?

keyboard layout android

8
推荐指数
1
解决办法
5万
查看次数

使用共享库与单个可执行文件

我的同事声称我们应该将我们的C++应用程序(C++,Linux)分解为共享库,以提高代码模块性,可测试性和重用性.

从我的观点来看,这是一个负担,因为我们编写的代码不需要在同一台机器上的应用程序之间共享,也不需要动态加载或卸载,我们可以简单地链接单个可执行应用程序.

此外,使用C函数接口IMHO包装C++类会使它变得更加丑陋.

我还认为单个文件应用程序将更容易在客户的站点远程升级.

如果不需要在应用程序之间共享二进制代码而没有动态代码加载,是否应该使用动态库?

c c++ shared-libraries

7
推荐指数
2
解决办法
4195
查看次数

连接文件而不复制其内容

(在C/C++/Linux中)

有没有办法连接文件A和文件B(或实际上将一个A的内容附加到B的内容)只是通过改变文件系统而没有数据复制的开销?然后可以丢弃文件A.

谢谢

c++ linux file-io file

7
推荐指数
1
解决办法
713
查看次数

std :: set.find()返回的迭代器有多长?

我需要通过保存set.find()返回的迭代器来跟踪std :: set元素.

我的问题是插入和删除其他元素是否使获得的迭代器无效?从我做过的简单测试我可以看出它不是,但我想确保这个功能是设计的.

c++ stl set stdset

7
推荐指数
1
解决办法
244
查看次数

如何从Linux上的特定接口发送UDP数据包?

如何使用C 从Linux上的特定接口发送UDP数据包?我应该使用bind吗?是否可以从没有IP地址的接口发送UDP?

谢谢.

c sockets linux udp

7
推荐指数
2
解决办法
1万
查看次数

STL矢量擦除通过指针

理解(至少我认为我这样做)指针可以用作随机STL迭代器.

除非我将指针强制转换为迭代器,否则为什么以下代码无法编译?

vector<int> v{1, 2, 3};
v.erase(&v[0]);
Run Code Online (Sandbox Code Playgroud)

c++ iterator stl

7
推荐指数
1
解决办法
711
查看次数