В многопоточном C / C ++ выполняет ли malloc / new блокировку кучи при выделении памяти

Мне любопытно, есть ли блокировка выделения памяти, если два потока одновременно запрашивают выделение памяти. Я использую OpenMP для многопоточности, код C ++.

ОС: в основном Linux, но также хотел бы знать для Windows и Mac. & ...

Учитывая XML-документ, который выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
    <entry key="agentType">STANDARD</entry>
    <entry key="DestinationTransferStates"></entry>
    <entry key="AgentStatusPublishRate">300</entry>
    <entry key="agentVersion">f000-703-GM2-20101109-1550</entry>
    <entry key="CommandTimeUTC">2010-12-24T02:25:43Z</entry>
    <entry key="PublishTimeUTC">2010-12-24T02:26:09Z</entry>
    <entry key="queueManager">AGENTQMGR</entry>
</properties>

Я хочу напечатать значения атрибута "key" и элемента, чтобы они выглядели так:

agentType = STANDARD
DestinationTransferStates = 
AgentStatusPublishRate = 300
agentVersion = f000-703-GM2-20101109-1550
CommandTimeUTC = 2010-12-24T02:25:43Z
PublishTimeUTC = 2010-12-24T02:26:09Z
queueManager = AGENTQMGR

Я возможность без проблем распечатать значения узлов, используя этот код:

XPathFactory factory = XPathFactory.newInstance();
XPath xpath = factory.newXPath();
XPathExpression expr = xpath.compile("//properties/entry/text()");

Object result = expr.evaluate(doc, XPathConstants.NODESET);
NodeList nodes = (NodeList) result;
for (int i = 0; i < nodes.getLength(); i++) {
    System.out.println(nodes.item(i).getNodeValue()); 
}

И я могу распечатать значения атрибута "key", изменив выражение xpath и методы узла следующим образом:

XPathFactory factory = XPathFactory.newInstance();
XPath xpath = factory.newXPath();
XPathExpression expr = xpath.compile("//properties/entry");
Object result = expr.evaluate(doc, XPathConstants.NODESET);
NodeList nodes = (NodeList) result;
for (int i = 0; i < nodes.getLength(); i++) {
    System.out.println(nodes.item(i).getAttributes().getNamedItem("key").getNodeValue()); 
}

Похоже, что будет способ получить оба этих значения за одну оценку . Я всегда мог оценить два списка NodeList и перебирать их с помощью общего индекса, но я не уверен, что они гарантированно будут возвращены в том же порядке. Любые предложения приветствуются.

7
задан Ashish Aggarwal 20 March 2014 в 11:36
поделиться