标签: shared

在多个不同线程之间共享变量

我想在多个线程之间共享一个变量,如下所示:

boolean flag = true;
T1 main = new T1();
T2 help = new T2();
main.start();
help.start();
Run Code Online (Sandbox Code Playgroud)

我想flag在main和help线程之间共享,这些是我创建的两个不同的Java类.有办法做到这一点吗?谢谢!

java multithreading synchronization shared

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

如何在Linux中由两个不同的进程调用共享库文件?

在Linux中,我有一个名为foo.so的共享库文件.当我执行2个不同的进程p1时,p2都使用foo.so. 这个foo.so会被这两个进程重叠吗?

c linux shared process

17
推荐指数
2
解决办法
9076
查看次数

加载共享库时出错

我正在使用g ++编译器在Ubuntu上运行eclipse,我正在尝试运行一个使用xerces的示例程序.

构建没有产生任何错误,但是当我试图运行程序时,我会收到此错误:

error while loading shared libraries: libxerces-c-3.1.so: cannot open shared object file: No such file or directory

libxerces-c-3.1.so/opt/lib我在eclipse中作为库包含的目录中.我检查文件夹时文件就在那里.当我执行时echo $LD_LIBRARY_PATH,/opt/lib也列出了.

问题所在的任何想法?谢谢.

一个ldd libxerces-c-3.1.so命令产生以下输出:

linux-vdso.so.1 =>  (0x00007fffeafff000)
libnsl.so.1 => /lib/libnsl.so.1 (0x00007fa3d2b83000)
libpthread.so.0 => /lib/libpthread.so.0 (0x00007fa3d2966000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007fa3d265f000)
libm.so.6 => /lib/libm.so.6 (0x00007fa3d23dc000)
libc.so.6 => /lib/libc.so.6 (0x00007fa3d2059000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00007fa3d1e42000)
/lib64/ld-linux-x86-64.so.2 (0x00007fa3d337d000)
Run Code Online (Sandbox Code Playgroud)

shared shared-libraries

17
推荐指数
2
解决办法
4万
查看次数

C++原始指针和std :: shared_ptr

我正在使用std::shared_ptr,在我的软件开发过程中,我遇到了几个让我对内存管理产生怀疑的案例.我有一个第三方库,它总是给我提供函数的原始指针,在我的代码中我将它们转换为std::shared_ptr(从std而不是boost.顺便说一句,两者之间有什么区别?).所以我想说我有以下代码:

ClassA* raw = new ClassA;
std::shared_ptr<ClassA> shared(raw);
Run Code Online (Sandbox Code Playgroud)

现在当共享指针超出范围时会发生什么(假设它在函数中被声明为本地,现在我正在退出该函数).请问ClassA对象仍然存在,因为原始指针指向它?

c++ pointers shared

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

GNU屏幕自动重新调整屏幕大小-x

有没有办法自动重新调整屏幕窗口大小,以及屏幕-x选项?我知道一旦共享屏幕会话打开,我们可以通过使用screen fit命令来完成此操作,但有没有办法自动执行此操作?(就像屏幕-r -d一样,窗口会自动重新调整大小).我正在尝试自动打开一个共享的屏幕会话,当一个新的ssh会话打开时(通过在.bash_profile中使用screen -x命令),这是有效的; 但窗户没有重新调整大小.任何建议都会有帮助.

session shared gnu-screen

17
推荐指数
2
解决办法
4570
查看次数

Vista和ProgramData

存储程序数据文件的正确位置是什么,这些文件对于每个用户都是相同的但是必须可以为程序写入?MS Windows XP上的等效位置是什么?我已经读过普通用户安装后C:\ ProgramData不可写.真的吗?如何使用Platform SDK以编程方式检索该目录?

directory shared programdata windows-vista

15
推荐指数
2
解决办法
9807
查看次数

shared_ptr和weak_ptr转换

我正在尝试使用std::shared_ptr和处理对象std::weak_ptr.场景是这样的:

我有一个类的对象,channel它派生自一个抽象类abstract::channel(使用纯虚函数).我有一个容器channelContainer(std::vector)包含对象的共享指针(std::shared_ptr)channel.

现在,我有一个deque (std::deque)包含弱指针(std::weak_ptr)的每个对象channelContainer.让我们说出这个双端队列freeChannelQueue.

所以我们说:

std::vector<std::shared_ptr<abstract::channel> > channelContainer;
std::deque<std::weak_ptr<abstract::channel > > freeChannelQueue;

//Assuming that both the containers are filled appropriately How do I go about implementeing the below functions?

abstract::channel& get_free_channel() {
  //This should return a free channel object from 'freeChannelQueue' and pop the queue.
}

bool release_channel(abstract::channel& ch) {
 //This should convert 'ch' to a …
Run Code Online (Sandbox Code Playgroud)

c++ pointers shared

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

Linux共享库,它使用共享库未定义的符号

两个共享库liba.so和libb.so. liba.so使用libb.so. 所有c文件都使用-fPIC编译.链接使用-shared.当我们在liba.so上调用dlopen时,它无法在libb.so中找到符号...我们得到"未定义符号"错误.我们可以dlopen libb.so没有错误.我们知道liba正在寻找libb,因为我们没有找到找不到文件的错误.删除libb.so时,我们收到文件未找到错误.我们试过 - 但没有运气.

有任何想法吗????

哦耶.gcc 4.1.2

更新:我们在链接liba时使用rpath,因此可以找到libb.

ldd liba.so返回:

linux-gate.so.1 => (0xffffe000)  
libb.so => ./libb.so (0xf6ef9000)  <-------- LIBB 
libutil.so.1 => /lib/libutil.so.1 (0xf6ef5000)  
libdl.so.2 => /lib/libdl.so.2 (0xf6ef1000)  
libm.so.6 => /lib/libm.so.6 (0xf6ec9000)  
libpthread.so.0 => /lib/libpthread.so.0 (0xf6eb1000)  
librt.so.1 => /lib/librt.so.1 (0xf6ea8000)  
libc.so.6 => /lib/libc.so.6 (0xf6d62000)  
/lib/ld-linux.so.2 (0x007d0000)   
Run Code Online (Sandbox Code Playgroud)

在libb的末尾没有.#是有意义的吗?

linux gcc shared

14
推荐指数
1
解决办法
4万
查看次数

Android Intents:使用具有相同sharedUserId的其他应用程序使用类名启动活动

我的所有应用都有相同的sharedUserId.我想使用我当前应用程序的类启动另一个应用程序类.我想使用intent extras但我不想使用意图URL.我也不想更改目标活动应用的AndroidManifest.

android shared android-intent android-activity

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

Unix:在进程之间共享已映射的内存

我有一个预先构建的用户空间库,其中包含一个API

void getBuffer (void **ppBuf, unsigned long *pSize);
void bufferFilled (void *pBuf, unsigned long size);
Run Code Online (Sandbox Code Playgroud)

想法是我的代码从lib请求一个缓冲区,用东西填充它,然后把它交给lib.

我希望另一个进程能够填充此缓冲区.我可以通过shm*/shm_*API创建一些新的共享缓冲区,让其他进程填充,然后将其复制到lib的本地进程中的lib缓冲区,但这会产生额外的开销(可能很大)复制.

有没有办法共享已为进程映射ALREADY的内存?例如:

[local lib process]
getBuffer (&myLocalBuf, &mySize);
shmName = shareThisMemory (myLocalBuf, mySize);

[other process]
myLocalBuf = openTheSharedMemory (shmName);
Run Code Online (Sandbox Code Playgroud)

这样,其他进程可以直接写入lib的缓冲区.(进程之间的同步已经处理好,所以没有问题).

memory shared ipc

14
推荐指数
2
解决办法
5002
查看次数