小编Sha*_*Muh的帖子

使用C++ 98标准访问地图

我有以下C++ 11兼容代码,我需要用C++ 98编译它,它不支持'.at'.如何重写它以与C++ 98兼容?

String suffix("sss");
headers_t& meta = ...;
typedef std::map<std::string, std::string> headerpair_t;
typedef std::map<std::string, headerpair_t> addheader_t;

addheader_t addheader;

for(headerpair_t::const_iterator piter = addheader.at(suffix).begin(); piter !=  addheader.at(suffix).end(); ++piter){
    // Adding header
    meta[(*piter).first] = (*piter).second;
}
Run Code Online (Sandbox Code Playgroud)

c++ c++11 c++98

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

Spring 中的线程

我正在尝试对我的代码进行一些优化,并希望在我执行耗时操作的地方生成一个线程。在实施该优化的过程中,我遇到了一个让我发疯的问题。我简化了问题并为该特定问题创建了一个测试用例:(我使用的是 SpringJUnit4ClassRunner,因此事务在 testCRUD 方法的开头正确启动)

有人能帮我理解为什么 foundParent 在线程中为空吗?

private Semaphore sema = new Semaphore(0, false);
private long parentId;

@Test
public void testCRUD() {
    //create
    DBParent parent = null;
    {
        parent = new DBParent();
        parentDao.persist(parent);
        parentId = parent.getId();
        assertTrue(parentId > 0);

        parentDao.flush();
    }

    (new Thread(
        new Runnable() {
            public void run() 
            {
                System.out.println("Start adding childs !");
                DBParent foundParent = parentDao.findById(parentId);
                assertTrue(foundParent != null); //ASSERTION FAILS HERE !!!!

                System.out.println("Releasing semaphore !");
                sema.release();
                System.out.println("End adding childs !");
            }
    })).start();

    try {
        System.out.println("Acquiring semaphore !"); …
Run Code Online (Sandbox Code Playgroud)

session spring multithreading caching hibernate

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

标签 统计

c++ ×1

c++11 ×1

c++98 ×1

caching ×1

hibernate ×1

multithreading ×1

session ×1

spring ×1