标签: shared

是否在运行的脚本之间共享PHP会话变量?

全局$ _SESSION数组中的会话变量是否跨脚本共享?假设我将一个值放入$ _SESSION ['box'],另一个同时运行的脚本是否可以使用相同的密钥存储另一个值?他们会发生冲突吗 或者它会根据客户端的会话ID管理实际的变量值吗?

php session shared session-variables

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

C++提升共享数组交换指针(简单问题)

我是新手来增强共享阵列.

现有代码声明了两个数组:

boost::shared_array<unsigned char> src; 
boost::shared_array<unsigned char> dest; 
Run Code Online (Sandbox Code Playgroud)

我想做的就是交换每个数组指向的内容(src变为dest,dest变为src).据我所知,shared_array.get()方法返回一个指向其中一个元素的指针(可以是任何类型).

所以我添加的声明是:

boost::shared_array<unsigned char> temp;
Run Code Online (Sandbox Code Playgroud)

我添加的代码是:

temp.get() = src.get();
src.get() = dest.get();
dest.get() = temp.get();
Run Code Online (Sandbox Code Playgroud)

每条线都失败了; 编译错误是C2016:'=':左操作数必须是l值.

我是一个C++新手,所以我搜索了错误,看到该错误消息意味着左手操作数不可分配.然而,左侧是指针,指针可以分配给其他指针.

所以我不确定我做错了什么.有人可以帮帮我吗?

提前致谢.

JBU

c++ arrays boost pointers shared

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

在不同步的情况下读写SysV共享内存(使用信号量,C / C ++,Linux)

我使用SysV共享内存让两个进程相互通信。我不希望代码变得复杂,所以我想知道是否真的需要使用信号量来同步对共享内存的访问。在我的C / C ++程序中,父进程从共享内存中读取,子进程写入共享内存中。我编写了两个测试应用程序,以查看是否会产生诸如分段错误之类的错误,但我无法(Ubuntu 10.04 64bit)。即使两个进程在while循环中不停地写入同一共享内存也不会产生任何错误。

我希望有人对此事有经验,可以告诉我是否真的必须使用信号量来同步访问,或者我是否可以不进行同步。

谢谢

c++ linux memory shared semaphore

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

C++:抛出异常时堆栈不会被解除

你好,

我的一个C++项目中有一个非常奇怪的问题:我写了一个C++ Socket包装器,尝试连接到给定的主机和端口(通过IPv4/TCP)并抛出SocketException(派生自std :: runtime_error),如果发生错误(例如"拒绝连接").正确捕获异常并按预期将错误消息写入控制台,但显然我的Socket类的析构函数未被调用(它也应该向std :: cerr输出消息,但只有连接有效时才会显示消息如果Socket离开堆栈,稍后会被销毁,例如在尝试使用套接字的函数结束时.析构函数应该关闭封装的套接字,但是在抛出异常时套接字保持打开状态(你可以用lsof作为未知类型的套接字看到它),因此析构函数中似乎根本没有执行任何代码.由于我无法用一个简单的测试用例重现这个问题,我的猜测是它在某种程度上与我项目的相当复杂的结构有关:我有一个核心应用程序包含Socket类的代码并提供一个Singleton类提供实现用于通信的协议并返回请求结果的方法,对这些方法之一的每次调用都会生成自己的Socket实例,并为其提供有关要使用的主机和端口的必要信息.为了简化套接字生成和管理,使用std :: auto_ptr,如果方法已经完成并且清理了堆栈,它应该删除Socket,这可以根据控制台输出正常工作,但它应该在抛出异常时以相同的方式工作,至少到目前为止我的意见是什么.核心能够通过dlopen以共享对象格式加载插件,并通过共享对象中的extern C声明函数获取指向插件的类实例的指针.此实例现在使用核心提供的Singleton与服务器通信并显示检索到的数据.

我的问题是:使用共享对象时堆栈展开是否存在限制,或者我应该在哪里找到我错过的东西以使其正常工作?

c++ shared exception object

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

如何在MVC中创建共享视图

在我的Views文件夹中,我有几个文件夹,如Category,Origin,Price,....它们都有一个Browse.aspx文件,该文件中的代码显示了一个产品表.与这些文件夹关联的所有控制器都使用相同的ViewModel,但在每个视图中我都有重复的代码.代码是:

文件夹类别,文件browse.aspx文件夹来源,文件browse.aspx .....

<% foreach ( var p in Model.Products) { %>
    <li> <%: p.productname + " " + p.price + " " + p.origin.originname + " " + p.category.categoryname %> </li>
<% } %>
Run Code Online (Sandbox Code Playgroud)

如何在所有这些视图中创建共享视图并使用共享视图?

asp.net-mvc shared view

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

共享库,对象构造函数和fork()行为

g ++(Ubuntu 4.4.3-4ubuntu5)4.4.3.编辑清晰.

我有一个共享库,我想在第一次加载时做一些事情,并且每当没有更多的引用时.

我尝试了两种方法,结果相同.第一个是使用此链接的建议.第二种方法是在库中创建一个类的全局实例.

每个都是一样的.然后我构建了一个测试程序,该程序使用库和fork()关闭进程.事实证明构造函数只被调用一次,但析构函数被调用两次 - 每个进程一次.

这是共享库和fork()的预期行为,还是我在这里做错了什么?让dtors调用每个进程并且ctor只调用一次似乎非常危险.

共享库(g ++ -fPIC -c -o myshare.o myshare.cpp/g ++ -shared -o libmyshare.so myshare.o):

class SharedMemAccess
{
public:
    SharedMemAccess();
    ~SharedMemAccess();
};

static SharedMemAccess g_sharedMem;

SharedMemAccess::SharedMemAccess()
{    
    LOGDEBUG("Constructor\n");return;
}

SharedMemAccess::~SharedMemAccess()
{
    LOGDEBUG("Destructor\n");return;
}
Run Code Online (Sandbox Code Playgroud)

测试驱动程序(g ++ -c -o main.o main.cpp/g ++ main.o -lmyshare -o test):

int main()
{    
    LOGDEBUG("In main\n");

    pid_t rc = fork();  
    if (rc == -1)      LOGDEBUG("fork failed\n");
    else if (rc == 0)  ChildProcess();
    else               ParentProcess();

    return 0;
}

void ChildProcess() …
Run Code Online (Sandbox Code Playgroud)

c++ linux fork shared

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

我如何更改此代码,以便它写入字符串?

你好,我有这部分代码:

static void Main(string[] args)
{
    Console.WriteLine("Memory mapped file reader started");

    using (var file = MemoryMappedFile.OpenExisting("sensor"))
    {
        using (var reader = file.CreateViewAccessor(0, 3800))
        {
            var bytes = new byte[4051];

            Console.WriteLine("Reading bytes");
            for (var i = 0; i < bytes.Length; i++)
                Console.Write((char)bytes[i] + "");

            Console.WriteLine(string.Empty);
        }
    }

    Console.WriteLine("Press any key to exit ...");
    Console.ReadLine();
}
Run Code Online (Sandbox Code Playgroud)

它打开共享内存,然后将其写入var字节并显示它.我怎么会把它写成一个字符串?我知道它与"var bytes = new byte [4051];"有关.但我显然不能将"byte"写入新字符串.

PS现在代码的输出(带数组)是简单的文本:ABCDEFG ...等

谢谢

c# memory string shared var

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

深层复制结构到POSIX共享内存

我有两个结构:

struct bets{
   int bets[36];
   int last_bet;
}bets
struct board{
   int type;
   bets *bet;
 }board
Run Code Online (Sandbox Code Playgroud)

我创造了一大块鲥鱼记忆sizeof(board).所以,我在共享内存中得到了一个指向Board的指针(以免称之为ptr).我创建了一个新的boardbets结构 board *b,bets * bts....添加board->bet = bts.现在,我将"b"复制到了ptr memcpy(ptr, bts, sizeof(board)).我可以访问ptr->type.但是当我尝试访问时 ptr->bet->last_bet,我遇到了分段错误错误.

我也试过像这样复制:

board *b;
memcpy(ptr, b, sizeof(board));
bets *bts;
memcpy(ptr->bet, bts, sizeof(bets)).
Run Code Online (Sandbox Code Playgroud)

仍然得到分段错误错误.

如何将两个struct one复制到另一个内部并仍然可以访问嵌套的?

c memory shared nested structure

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

如何将共享VB.NET方法转换为C#

我有用VB.NET编写的以下方法:

Public Shared Function formatClassNameAndMethod(ByVal prefix As String, ByVal stackFrame As StackFrame) As String

        Dim methodBase As MethodBase = StackFrame.GetMethod()

        Return prefix + ":[" + stackFrame.GetMethod().DeclaringType.Namespace + "][" + stackFrame.GetMethod().DeclaringType.Name + "." + methodBase.Name + "] "

End Function
Run Code Online (Sandbox Code Playgroud)

我使用代码移植工具将其转换为C#.它产生了以下方法:

public static string formatClassNameAndMethod(string prefix, StackFrame stackFrame)
{
    MethodBase methodBase = StackFrame.GetMethod();

    return prefix + ":[" + stackFrame.GetMethod().DeclaringType.Namespace + "][" + 
            stackFrame.GetMethod().DeclaringType.Name + "." + methodBase.Name + "] ";
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,Visual Studio现在给出了以下错误:

无法在静态上下文中访问非静态方法"GetMethod"

它抱怨StackFrame.GetMethod()因为该方法不是静态的.为什么会这样?我理解错误是什么,但我不明白为什么我没有在VB.NET中得到它.VB.NET中的Shared和C#中的static有什么区别?转换工具没有正确转换吗?

c# vb.net static porting shared

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

在不使用内核的情况下在CUDA中写入共享内存

我想在main()函数中创建一个数组,输入所有正确的值,然后让这个数组立即被共享内存中的线程使用.

我在CUDA中查找如何使用共享内存的每个示例都有线程在写入共享数组,但我想在启动内核之前立即使用我的共享数组.

任何帮助这样做将非常感激.提前致谢!

一些上下文:我想要的共享数组永远不会更改并被所有线程读取.

编辑:显然这对共享内存是不可能的.有没有人知道是否可以使用只读缓存?

c++ memory program-entry-point shared cuda

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